1. 一个正整数除以0的结果为正无穷大,0/0或者负数的平方根的结果为NaN(不是一个数字);
if(x==Double.NaN)//is never true,所有非数值的值都认为是不同的
if(Double.isNaN(x))//检查x是否为不是一个数字
2. System.out.println(2.0-1.1);
输出的值为0.8999999999999999,浮点数值采用二进制系统表示,无法精确表示分数1/10;
public static void main(Stringu005Bu005D args)
System.out.println("u0022+u0022");//表示“”+“”,输出空
// c:user 会报错,u后面未跟着4个16进制数
4. 使用static final声明一个类常量
5. 运算符
15/2输出7,15%2输出1,15.0/2输出7.5
System.out.println(1.5/0);//输出Infinity
System.out.println(2/0);System.out.println(0/0);
报Exception in thread "main" java.lang.ArithmeticException: / by zero
strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。
++i:先加1;i++:先获取值再加1
a+=b+=c等于a+=(b+=c)
6.在源文件顶部引入math,使用时就不用再写Math
import static java.lang.Math.*;
System.out.println(sqrt(2));
7.类型转换
实心箭头表示无信息丢失的转换,虚线箭头表示可能有精度损失的转换;
System.out.println((byte)300);//输出44
8.字符串
String all = String.join("/", "S", "M", "L", "XL", "XXL");
输出:S/M/L/XL/XXL
9.码点的问题
10.javaApi地址: https://docs.oracle.com/javase/8/docs/api
11.每次连接字符串,都会构建一个新的String对象。
12.Scanner,printf的用法,printf的详细用法请看书
Scanner in = new Scanner(System.in); // get first input System.out.print("What is your name? "); String name = in.nextLine(); // get second input System.out.print("How old are you? "); int age = in.nextInt(); // display output on console System.out.printf("Hello,%s. Next year, you'll be %d",name,age+1); System.out.println(); Double x = 100000.0 / 3; System.out.println(x); System.out.printf("%8.2f", x);
Scanner in = new Scanner(Paths.get("C://Users//yr//Desktop//3.txt"), "UTF-8");//读取文件 PrintWriter out = new PrintWriter("C://Users//yr//Desktop//3.txt", "UTF-8");//写文件
13.
public static void main(String/u005B/u005D args) throws IOException { for (double i = 0; i != 10; i += 0.1) { System.out.println(i); } }//这个循环可能永远无法停止,因为二级制无法精确表示0.1
14.switch语句
编译代码时,可以考虑加上-Xlint:fallthrough选项
如:javac -Xlint:fallthrough Test.java
如果某个分支缺少一个break语句,编译器就会给出一个警告信息
15.带标签的break
int n = 1; lable: while (true) { if (n < 5) break lable; }
16.对象数组的元素初始化为一个特殊值null
17.java实际没有多维数组,只有一维数组,多维数组被解释为数组的数组。