JAVA
4.Unicode和char类型
1】有些常用字符采用单字节编码,而另一些字符则需要两个或更多个字节。
2】因为16位的char字符无法满足描述所有的Unicode字符的需要了,因此需要解决这个问题的基本方法。
1)码点–指与一个编码表中的某个字符(char)对应的代码值。在Unicode标准中,码点采用十六进制书写,并加上前缀U+ [例如,U+0041就是拉丁字母A的码点]。
2)Unicode的码点可以分成17个代码级别(code plane)。第一个代码级别称为基本的多语言级别,码点从U+0000到U+FFFF,其中包括经典的Unicode代码;其余16个级别的码点从U+00000到U+10FFFF,其中包括一些辅助字符。
3)UTF-16编码采用不同长度的编码表示所有Unicode码点。
4)在基本的多语言中每个字符用16位表示,通常被称为代码单元,而辅助字符采用一对连续的代码单元进行编码。这样构成的编码值落入基本多语言级别中空闲的2048字节内,通常被称为替代区域[U+D800U+DBFF用于第一个代码单元,U+DC00U+DFFF用于第二个代码单元]。
/*这样的设计我们可以迅速知道一个代码单元是一个字符编码,还是一个辅助字符的第一或第二部分。
5)在JAVA中,char类型描述了UTF-16编码中的一个代码单元。
5.Boolean类型—用来判断逻辑条件(整型值与boolean值不能相互转换)。
4)变量—变量的所有字符都是有意义的,并且大小写敏感。变量长度基本没有限制
注/ 1】如果想要知道哪些Unicode字符属于JAVA中的’字母’,可以使用Character类的isJavaIdentifierStart和isJavaIdentifierPart方法来检查。
2】尽管$是一个合法的java字符,但不要在自己的代码中使用这个字符。它只用在Java编译器或其他工具生成的名字中。
1.变量的初始化—声明一个变量后,必须用赋值语句进行显示初始化。
2.常量—final表示这个变量只能被赋值一次。习惯上,常量名使用全大写。
注/可以使用关键字static final设置一个类常量,需要注意的是类常量定义于main()方法的外部。
5)运算符
/整数被0除会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。
1】可移植性—double w=xy/z;
很多Inter处理器计算XY,并将结果存储在80位的寄存器中,再除以Z并将结果截断为64位。但是,java虚拟机设计者允许中间计算结果采用扩展精度。但是,对于使用strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。[例如public static void main(String[] args)]。
2】数学函数与常量—在Math中包含了各种各样的数学函数。
Math.sqrt(x); Math.pow(x,a); floorMod(postion+adjustment,12)[解决整数除以余数,整数不能为负的问题] Math.PI Math.E
常用三角函数-----Math.sin Math.cos Math.tan Math.atan Math.atan2
3】数值类型之间的转换—自动转换、强制转换
/只有使用条件表达式b? 1:0 boolean类型才能转换为数值类型。
4】结合赋值和运算符
/++n:n先+1再运算 n++: n先运算再+1
5】关系和boolean运算符
/&&、||、?:、!、~、&、|…
6】枚举类型—枚举类型包括有限命名类型的值。
enum Size {SMALL、MEDIUM、LARGE、EXTRA_LARGE};
Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者null值,null表示这个变量没有设置任何值。
7】字符串
1)字串 String greeting=”Hello”; String greeting=”Hello”;
2)拼接 String expletive=”EXPLETIVE”; String PG13=”deleted”;
String message=expletive+PG13
/*当一个字符串与一个非字符串拼接时,后者被转化为非字符串。
int age=13; String rating=”PG”+13; rating设置为”PG13”。
3)定界符join String all=String.join(“/”,”S”,”M”,”L”,”XL”);
4)不可变字符串—由于不能修改JAVA字符串的字符,所以在JAVA文档中将String类对象称为,不可变字符串。
5)检测字符串是否相等 s.equals(t);不区分大小写equalsIgnoreCase方法
/*不要使用==运算符来检测两个字符串是否相等,==智能检测是否放在同一位置。equals检测的时字符串的字面量。
6)空串与NULL串—””空串,长度为0的字符串;null,表示任何对象都没有与该变量关联(null不能够调用方法)。
7)String greeting=”Hello”; int n=greeting.length(); length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量。
/*要想的到实际长度,即码点数量,可以调用:
int cpCount=greeting.codePointCount(0,greeting.length) ;
调用s.charAt(n)将返回位置n的代码单元,n介于0~s.length()-1之间。
char first=greeting.charAt(0);
Char last=greeting.charAt(4);
想要得到第i个码点—int cp=greeting。codePointAt(index);
8)JAVA应用程序接口编程接口(API),每一个API注释都是以形如java.lang.String的类名开始的。
9)构建字符串—1】如果需要许多小段的字符串构建一个字符串,需要构建一个空的字符串构造器:StringBuilder builder=new StringBuilder();
但需要添加内容时,调用append 方法:builder.append(ch); Builder.append(str);
在需要构建字符串时就调用toString方法,将得到一个String对象,其中包含了构建器中字符串的序列。 String completedString=builder。toString();
6)输入输出
1】读取输入----标准输入流System.in没有那么简单。要想通过控制台进行输入,首先需要构造一个Scanner对象,并与”标准输入流”System.in关联。
Scanner in=new Scanner(System.in);
In.nextline();nextline方法将输入一行。
In.next();读取一个单词;于此类似,想要读取下一个浮点数用nextdouble方法。
/*Scanner类定义在java.util包中。当使用类不是定义在基本java.lang包中时,一定要使用import指示字将相应的包加载进来。
2】由于输入可见,读取密码时不适用,应该使用Console实现这个目的。
Console cons=System.Console(); String username=cons.readLine(“USer name:”);
char[] passwd=cons.readPassword(“password: ”);
3】格式化输入—System.out.printf(“%8.2f”,x); %8----8个字符宽度 2f----两个字符精度
可以使用静态的String.Format方法创建一个格式化的字符串,而不是打印输出。