第3章 Java基本程序设计结构
Posted Doubest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3章 Java基本程序设计结构相关的知识,希望对你有一定的参考价值。
3.1 一般性总结
- Java中的main方法必须声明为public,而且必须是static的
- 8中基本的数据类型:
- 整型:byte、short、int、long
- 浮点型:float、double
- 字符型:char
- 布尔型:boolean
- final关键字指示常量
- 了解:strictfp关键字标识的方法内部使用严格的浮点计算,因为有些机器的浮点数寄存器是80位的,一般来说中间过程会暂时存在80位的寄存器中,这就导致了同一个运算在一台64位浮点寄存器和一台80位浮点寄存器计算机运算结果不一致,违背了Java的可移植性。
- >>>和>>的区别,>>>是高位补0,而>>是高位补符号位
3.2 数据类型
- long类型的数值后面必须加L或者l,例如:4000000000L
- 16进制数值前面加上0x或者0X
- 8进制数值前面加上0
- 从Java7开始,2进制数值加上前缀0b或者0B
- 从Java7开始,数字可以加下划线,例如100万,1_000_000,编译器会自动去掉这些下划线
- float有效位数是6~7位,而double类型是15位,如果常数数值没有后缀f或者F,这默认代表为double类型
- 如system.out.println(2.0-1.0)将得到0.89999~9,这是因为二进制无法精准表示1/10所导致,如果不允许有舍入误差,则必须使用BigDecimal类型
- 转义序列u基本可以代表Java语言中的所有字符,而且是在解析代码前转换,所以如果在写注释的时候,这样写:// this is directory in c:user,这个注释虽然想表示盘符,但是会造成语法错误,因为u后面没有跟上4个十六进制数字,char类型数值大小是2字节,占4个十六进制位
- Java中的char类型使用UTF-16中的一个代码单元,处理复杂,强烈建议不要使用char类型
- 在Java中,boolean类型只有true和false两种取值,与C语言不同,false不能代表整数0,true不能代表整数1,但是boolean类型和int型可以进行强制转换
3.3 字符串
- String.join("/","s","m") 可以得到 s/m,第一个参数是分隔符,后面是String...args
- 判断字符串是否合法时,一定记得先判断字符串是否为null。在调用它的.equals或.length方法
if(str != null && str.length() != 0)
-
码点和代码单元的比较:
- 常用Unicode字符的代码单元数量:1
- 辅助字符的代码单元数量:2
- 代码单元:实际上字符串的.length()方法返回的是代码单元的数量,只是因为我们平时所见到能够直接打出来的字,基本上都是常用的Unicode字符,没有辅助字符,所以通常情况下,代码单元的数量就等于码点的数量。
- 码点:码点的数量就是字符串实际的长度
// 要想拿到实际的长度,需要调用 int realLength = str.codePointCount(0,str.length());
- 码点的内容了解一下即可,用处不大,很底层,如果以后需要用到码点相关知识,可以参阅教材p49页的内容
-
StringBUilder读写效率很高,常用API:
- appned(str or char)
- insert(int index , str or char)
- delete(from,end),删除不包括end
-
String.format("你好啊,%s",name)可以组织一个格式化后的字符串,比较方便。
3.4 控制流程
- 一个非常有用的知识点,退出所有循环的快速方法:
sign: // 这个是带标签的break,必须卸载希望跳出的最外层循环之前
while(...) {
for(...){
for(...){
//在这里如果想要退出所有的循环,以前还需要在外层加许多条件判断,java中可以这么玩,退到标志处。
break sign;
}
}
}
3.5 大数值
- BigInteger || BigDecimal -> .valueOf(普通的数值),该静态方法可以完成普通数值到大数的转换,就两种大数类,分别对应整数和小数,而且可以实现精准运算
- 大数也可以完成加减乘除比较求余(小数不可以求余哈),但是java语言没有运算符重载,所以大数类使用方法实现了这些功能:
- add(big) 加法
- subtract(big) 减法
- multiply(big) 乘法
- divide(big) 除法
- mod(big) 求余
3.6 数组
- 数组初始化方式有两种:
- int[] 变量 = new int[长度] 注:int为0,boolean为false,对象为null
- int[] 变量 = new int[]{1,2,3}
- int[] 变量 = {1,2,3} 与上面等价
- 数组拷贝:
- Arrays.copyOf(数组,数组的长度) 数组的长度可以比原数组还要长,可以用来对数组扩容
以上是关于第3章 Java基本程序设计结构的主要内容,如果未能解决你的问题,请参考以下文章
201771010130 王志成《面向对象程序设计(java)》第十八周学习总结
编写高质量代码:改善Java程序的151个建议(第3章:类对象及方法___建议36~40)
CoreJavaE10V1P3.4 第3章 Java的基本编程结构-3.4 变量