Java 知识点整理-1.基础入门

1、任何数据类型用+与字符串相连接都会产生新的字符串

2、Java中的字符char可以存储一个中文汉字

3、整数相除结果只能得到整数。

4 、整数想得到小数,把其中一个数变成小数,另一个数在运算的时候会自动类型提升

5、%运算符结果的符号只和左边有关系,与右边无关

6、任何一个正整数%2结果不是0就是1可以当作切换条件。

7、++ --运算符放在变量前面的时候,会先自身加一或者自身减一,然后再将结果赋值。

8、++ --运算符放在变量后面的时候,会先将变量中的值取出做赋值操作,然后再自身加一或者自身减一。

9、按Shift+Tab键向前缩进

10、当byte与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给byte会损失精度。然而++ --会默认加强制类型转换符使结果与左边类型相同。

11、当short与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给short会损失精度。然而+= -= *= /= %=会默认加强制类型转换符使结果与左边类型相同。

12、==不能写成=

13、一个数据对另一个数据位异或两次,该数本身不变。(交换两个数:x=x^y; y=x^y; x=x^y)

14、<<: 左移  左边最高位丢弃,右边补齐0。向左移动几位就是乘以2的几次幂。

15、>>: 右移  最高位是0,左边补齐0; 最高为是1,左边补齐1。向右移动几位就是除以2的几次幂。

16、>>>: 无符号右移  无论最高位是0还是1,左边补齐0。

17、比较表达式无论简单还是复杂,结果必须是boolean类型。

18、int x = 10;是两句话,int x 声明是一句,x = 10赋值是一句。

19、一般来说:有左大括号就没有分号,有分号就没有左大括号 。

20、else后面是没有比较表达式的,只有if后面有。

21、三元运算符实现的,都可以采用if语句实现。反之不成立。当if语句控制的操作是一个输出语句的时候就不能。

22、switch(表达式)  表达式的值可以是byte,short,char,int,枚举,string字符串。

23、 if - else if最后一个else可以省略,但是建议不要省略,可以对范围外的错误值给出提示,switch中的default作用相同。

24、case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。

25、default可以在任意位置。但是建议在最后,因为它总是最后被执行。

26、break最后一个可以省略,其他最好不要省略。会出现一个现象:case穿透。

27、switch语句遇到break或执行到switch的右大括号结束。

28、switch建议判断固定值的时候用。

29、if建议判断区间或范围的时候用。

30、for的循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。

31、do...while循环至少执行一次循环体。

32、for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

33、如果你想在循环结束后,继续使用控制条件的变量,用while循环,否则用for循环。不知道用谁就用for循环。因为变量及早的从内存中释放掉,可以提高内存的使用效率。 

34、一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。

35、两种最简单的死循环格式:   while(true){...}    for(;;){...} 

36、'\x' x表示任意,\是转义符号,这种做法叫转移字符。'\t'  tab键的位置    '\r'  回车   '\n'  换行   '\"'   '\'' 

37、break只能在switch和循环中使用。

38、continue只能在循环中使用。

39、控制跳转语句标号:   标号:标记某个循环对其控制。标号组成规则:其实就是合法的标识符。 

40、return的作用:返回;它的作用不是结束循环的,而是结束方法的。

41、break是跳出循环,continue是终止本次循环继续下次循环。

42、方法调用(有具体返回值):单独调用,一般来说没有意义,不推荐。输出调用,不够好。因为我们可能需要针对结果进行进一步的操作。赋值调用,推荐。 

43、方法不调用不执行;方法与方法是平级关系,不能嵌套定义;方法定义的时候参数之间用逗号隔开;方法调用的时候不用在传递数据类型;如果方法有明确的返回值,一定要用return带回一个值 。

44、方法调用:(无返回值,void) :只能单独调用。

45、方法重载: 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。

46、参数列表不同:参数个数不同;参数类型不同;参数的顺序不同(算重载,但是在开发中不用) 

47、数组可以看成是一个容器,是存储同一种数据类型多个元素的集合。

48、数组既可以存储基本数据类型,也可以存储引用数据类型。

49、数组定义格式: 数据类型[] 数组名 = new 数据类型[数组的长度];

50、数组的初始化就是为数组开辟连续的内存空间,并为每个数组元素赋予值 。

51、动态初始化只指定长度,由系统给出初始化值:数据类型[] 数组名 = new 数据类型[数组长度];

52、静态初始化给出初始化值,由系统决定长度:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};

简化格式:数据类型[] 数组名 = {元素1,元素2,…};         声明和赋值在同一行。

53、数组的初始化不允许动静结合。

54、 栈存储局部变量,堆存储new出来的数组或对象 。

55、ArrayIndexOutOfBoundsException:数组索引越界异常。原因:你访问了不存在的索引。

56、NullPointerException:空指针异常。原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。(当数组引用赋值为null,再去调用数组中的元素)

57、数组遍历:依次输出数组中的每一个元素;数组的属性:arr.length数组的长度;数组的最大索引:arr.length - 1;

58、 二维数组表示: 1:数据类型 数组名[][] = new 数据类型[m][n];  2:数据类型[] 数组名[] = new 数据类型[m][n];

59、 二维数组遍历:外循环控制的是二维数组的长度,其实就是一维数组的个数;内循环控制的是一维数组的长度。

60、 基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失。引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问。Java中到底是传值还是传址?Java中只有传值,因为地址值也是值。(Java之父支持)

猜你喜欢

转载自blog.csdn.net/from_heat/article/details/82716993