java核心技术10阅读(一)

Unicode编码与JAVA 基本变量char、String类之间的关系

unicode是为了解决各国不同语言编码多样化问题而制定的统一编码标准。在unidecode中,利用码点,即前缀为U+,后缀为16进制的数组合起来代表字符对应的代码值,例如U+0041代表字符"A"。其标准是16为进制书写,码点可以分为17个级别,第一个代码级别称为基本的多语言级别,从U+0000到U+00FFFF,其余级别为辅助字符。

UTF-16编码是采用不同的长度的编码表示所有Unicode码点来解决16位的char类型变量不能描述所有的unicode字符的编码方式。其在多语言级别内,每个字符用16位表示,这被称作代码单元。大多数字符使用一个代码单元就行,而辅助字符需要使用一对代码单元。

java变量的char类型描述的正式UTF-16编码的一个代码单元,而String类是有char类型值的一个序列,字符串的length()/charAt返回的是代码单元的数量和代码单元的位置。所有有些特殊字符的length长度为2,正式因为其代码单元有两个,而码点却只有一个。 

JAVA String类不能修改

String类的字符串不能修改,类似与指针操作,指针指向于堆内存,方便让字符串可以可以共享内存,提高效率,并且java将自动对遗漏的字符内存做回收。

如果想要对字符串进行修改,则需要采用subString和+号拼接来生成新的字符串。

不能使用==来比较两个字符串的是否相同,因为==在java中并没有像C++一样重载来检测内同的相等性,而是采用了指针的模式。若要比较则需要采用compareTo()方法

JAVA输入和输出

输入可以导入Console对象和Scanner对象,Console对象更适合用户对密码的输入

格式化输出可以用printf吗,类似于c++。支持不同类型的输出,%s,%f,%x,%d等等,(%1$s指第一个参数以字符串形式打印)也支持加入不同分隔符进行输出,例如+、()、空格、逗号等,同样还有支持java.time,对日期做不同的输出。下图说明了printf方法参数的使用特性。

文件的输入输出通过scanner对象、和printerwriter对象去构建。

Java流程控制

for、while、if循环有块级作用域,不能在作用外引用作用域内定义的变量,也需要浮点数相等的判断,因为有舍入误差。

带标签的break,可以迅速的跳出多层嵌套的循环。

Java大数值

Biglnteger 和BigDecimal(java.math包)这两个类可以处理包含任意长度数字序列的数值,因为java不能重载,所以需要类自定义的加减乘除。

JAVA数组

数组一般是以类型+[]的形式进行定义,整型数组的默认值为0,其中数组的大小通过new type[n],n可以是常量也可以是变量。数组列表可以扩展数组的大小。

数组属于ARRAY类,具有interabel接口,能实现for(type element : collection)循环

允许数组的长度为0,但与null不同。

数组的值表示分配在堆上的指针的值,因此,浅拷贝的数组将会共享同一份内存。数组不能像c++指针一样进行自加操作

java多为数组其实是嵌套数组,数组的值代表子数组指针。

发布了15 篇原创文章 · 获赞 1 · 访问量 138

猜你喜欢

转载自blog.csdn.net/qq_17236715/article/details/103569542