Java基本程序设计结构(基础知识1)

《Java核心技术卷一:基础知识》

第三章知识点汇总

1.Java区分大小写。

2.Java全部内容必须放置在类中。

3.

4.空白符会被编译器忽略。

5.注释注意/*  */不能嵌套使用,因为在代码中可能包含一个*/  后面就会变为非注释。

6.Java强类型语言:每个变量必须声明一种类型。

7.

8.整数类型负数都要比正数多表示一位的原因:

“为什么是-(2^31)而不是-(2^31 -1)”,是因为计算机是用补码的形式来表示一个数。为了方便,以8位机举例(32位同理),原码的表示范围是-(2^7-1) ~ (2^7-1),即-127~127,而补码的范围是-(2^7) ~ (2^7-1),即-128~127,这是因为原码表示时,对于0有2种表示,分别是10000000和00000000,因为+0和-0都是0;而补码表示时,10000000表示的是-128【-128=-1 +(-127)=(10000001)原 + (11111111)原=(11111111)补 + (10000001)补 = (10000000)补】,所以补码可以比原码多表示一个比原最小值小1的数,同理,32位机也是如此,所以范围是-(2^31)~ (2^31 -1)

有原码求补码的方法:

符号位不变 ,将除符号位之外取反,在最后一位+1进行运算

9.很少情况下使用单精度float 多数是双精度double 如果只说是3.14 则默认是double类型的。

10.由于二进制计算 计算机计算2.0-1.1会返回0.8999999 精确计算需要用到BigDecimal大数类。

11.注意u 小心在你不知道的情况下转义

12.从JDK10 开始 可以使用var 无需指定变量类型。

13.final常量 static final类常量

14.实线为数据类型转换时不会因起精度丢失

虚线会引起精度丢失

 15.使用强制类型转换会将9.99(double)转化为9(int)

想要四舍五入要用Math.round()方法。

16.如果超出所转类型范围 会得到不同的数。

17.&& ||是短路运算符 ||来说前面的对了就为真了 &&来说前面错了就为错了

18.位运算符(永远的痛):&  | ^ ~   << >>

19.字符串拼接:+号 Java任何对象都能转换成字符串。

20.JDK11提供repeat方法  s.repeat(3) 将s重复三次

21.一定一定一定不要用==来判等字符串!!!

22.需要经常拼接字符串需要用StringBuilder,用String和+的话,每次都要新建对象,浪费时间和空间。

23.JDK5引入StringBuilder ,前身是StringBuffer

24.Scanner对象可以输入

Scanner in=new Scanner(System.in);
String s=in.nextLine();

25. 想要格式化输出可以用printf

%s 字符串

%f 浮点格式(也就是我们概念中的float或者double)

%b 相对应的参数中包含转义字符时,可以使用此替换符进行替换,对应的转义字符会被转义。

%c ASCII字符。显示相对应参数的第一个字符

%d, %i 十进制整数

%o 不带正负号的八进制值

%u 不带正负号的十进制值

%x 不带正负号的十六进制值,使用a至f表示10至15

%X 不带正负号的十六进制值,使用A至F表示10至15

%% 表示"%"本身

 26.任意精度的整型计算BigInteger 用valueOf()方法可以将int转化为BigInteger

任意精度的浮点数计算BigDemical

不能使用运算符 只能用add、subtract、multiply、divide方法进行加减乘除

27.声明一个数组的方法:

int[] a=new int[100];//这整个数组全部默认为0

int[] a=new int[3]{1,2,3};

int[] a={1,2,3};

int[] a=new int[3]; Arrays.fill(a,0);//将数组全部赋值0

int[] b=Arrays.copeOf(a,2*a.length);//拷贝数组,也常用户数组扩容

28.foreach不能处理多维数组

如果foreach应用到二维数组上需要嵌套使用

for(int[] line:arr)
    for(int tmp:line)
            //这才能按序取到数组每个数字

 29.小数类型(double、float)不能用==判断是否相等

由于计算机计算小数都存在误差,所以直接用==很难判断

double a=1/3;
double b=0.333333d;
if(a==b)
...

应该用特定的精度来判断

double a=1/3;
double b=0.333333d;
double dis=1e-6;
if(Math.abs(a-b)<dis)
...
原文地址:https://www.cnblogs.com/cckong/p/14257040.html