system.out.printlin("Hello");
此句是调用了system.out对象的println()方法。
3.3数据类型
0b:二进制 0x or 0X:16进制
double多数情况下不能满足需求,float类型的数值需要添加后缀F或者是f。
注释:二进制系统不能正确表示1/10,正如十进制系统不能表示1/3.
char类型的数值表示为16进制的范围:\u0000~\Uffff。是\u后面跟着一个四位的六进制数。
关于Unicode和char类型:
什么是码点?是指一个编码表中某个字符对应的代码值。Unicode标准中,码点用16进制书写,加上前缀U+。Utf16采用不同的长度表示所有的码点。强烈建议不要在程序中使用char类型。
3.4变量
逐行声明变量可以提高程序的可读性。并且,变量的声明尽可能的靠近程序第一次使用的地方。
final声明常量,并且常量名全大写。
3.5运算符
整数被0除产生异常,浮点数被0除会得到无穷大或NaN。
- public static strictfp void main(String[]args):如果一个类标记为strictfp那么类中所有浮点计算都要使用严格浮点计算(也就是说,中间运算的长浮点结果需要截断)而java语言默认的是不截断。
- floorMod方法取摸,结果总是非负的。解决了x%2,当x为负数,结果总是-1的情况。
- ++j和j++的问题,前缀形式会先完成加1;而后缀形式会使用变量原来的值。
- &&和||两个操作符,可以利用他们来避免错误。因为如&&,表达式1如果为false,那么表达式2就不用计算了。
- x<y?x:y 该表达式非常简洁地返回了两者中的较小者。
- 位运算符?
- 优先级问题:+=运算符是从右向左.&&运算符的优先级高于||.
- 枚举类型:
3.6字符串
- 1.join方法(“定界符”,“a”,"b","c")可以连接多个字符串并且用定界符分割。
- 2.使用equals()【还有equalsIgnoreCase】方法检查相等而不要使用“==”!
- 由较短的字符串构建字符串。字符串连接的话效率较低,于是使用StringBuilder.append()。
3.7输入输出
- Scnner对象不适合从控制台读取密码。需要使用Console cons=System.console();对象。为了安全,密码采用字符数组存储char[]
- printf(%8.2f,x)格式化输出的方法。、
- java.time包进行时间打印。
- 旧版的java使用new Date()对象输出时间。灵活拼接时间的代码:
- 文件输入操作。Scanner in=new Scanner(Paths.get("mytxt.txt"),"UTF-8");
- 文件输出PrintWriter out=new PrintWriter("myfile.txt","UTF-8")若不存在,则创建新文件。
printf("%1$s %2$tB %2$te,%2$tY","Due date:",new Date()) printf("%s %tB %<te,%<tY","Due date:",new Date())
- 文件路径问题,找到当前路径的方式:如下
String dir=System.getProperty("user.dir")
8. main方法的throws子句标记可能会出现的异常。
3.8控制流程
使用带有标签的语句块,可以使用break跳到块的末尾。
lable:
{
if(condition){
break lable;
}
}
break和continue完全是可选的,不使用也可表达相同的含义。故本书没有使用、。
3.9大数值
BIgInteger和BigDecimal实现了任意精度的浮点数运算。
BigInteger d=c.multiply(b.add(BigInteger.valueOf(200)))
3.10数组
数组的默认初始化:数值数组0,布尔数组false,对象数组为0.
匿名数组在不创建新变量的情况下重新初始化一个数组:
smallPrimes=new int[]{1,2,3,4}
数组拷贝:
int[] copiedLuckynumbers=Arrays.copyOf(luckynumbers,2*luckynumbers.length);
二维数组的快速打印方法:
int [][]a={{1,2},{3,4}};
System.out.println(Arrays.deepTOString(a));
不规则数组的打印方法:(先分配固定行数的二维数组,然后分配每一行。)
int[][]odds=new int[NMAX][];
for(int n=0;n<=NMAX;n++){
odds[n]=new int[n*n];
}
//访问方法
for(int[] row:odds)
{
for(int odd:row)
System.ot.println("%4d",odd);
System.out.println();
}