1.前言
接着上次的笔记继续整理Java的基础内容部分的笔记。
2.Java概念
1.Java的数据类型
Java中的数据类型分为两大类,分为基本数据类型和引用数据类型。基本数据类型有4种8个,分别是整形数据的byte,short,int,long,浮点数的float,double,布尔型boolean,字符型char。
它们的数据大小按照上面的顺序分别为1字节,2字节,4字节,8字节,4字节,8字节,1位(布尔型),2个字节。
除了基本的数据类型外,剩余的数据类型都属于引用数据类型。
2.i++和++i的区别
i++和++i都是自增运算,等同于i=i+1。当它们两个单独出现不与其他语句一起出现时,它们二者并没有任何区别。要注意的是i++和++i的使用仅仅针对变量。1++和++1会报错,因为1不是变量。但它们一旦和别的语句组合在一起时就有不同。下面看一个例子:
int x=5; int y=x++; System.out.println("x="+x+", y="+y); //以上代码运行后输出结果为:x=6, y=5 |
int x=5; int y=++x; System.out.println("x="+x+", y="+y); //以上代码运行后输出结果为:x=6, y=6 |
可以看到在运算中i++是先自增,然后参与到其他运算,而++i是其他运算结束后再自增。
3.&和&&的区别和联系
首先&和&&都可以用作逻辑与运算符,但二者间有点区别。&逻辑运算符称为逻辑与运算符,&&逻辑运算符称为短路与运算符。所谓的短路运算符就是指当&&前面的条件为假时,&&就不会判断后面的条件了,而&就算前面的条件为假时,也会判断后面的条件。
4.基本数据类型转换
基本类型转换分为自动转换和强制转换。自动转换规则是指容量小的数据类型可以自动转换成容量大的数据类型,也可以说低级自动向高级转换。要注意容量指的不是字节数,而是指类型表述的范围。强制转换规则是指高级变为低级需要强制转换。
数据类型从小到大的排序:
char,byte,short<int<long<float<double,其中boolean不参与比较。
转换规则:赋值运算符“=”两侧的转换,若左边级别>右边级别,会自动转换;若左边级别 == 右边级别,不用转换;若左边级别 < 右边级别,需强制转换。
5.Java的流程控制
Java的流程结构有3种分别是顺序,选择,循环结构。不管是那种结构语句执行都是从上到下,从左到右,逐行进行。
6.if多分支语句和switch多分支语句的区别
二者都是选择结构,都可以实现多分支。但switch更适合多分支条件,判断为等值判断,无法用区间判断,分支判断条件单一。switch判断条件支持的数据类型要注意一下,分别是byte,short,char,int四种整形类型,枚举类型和java.lang.String类型(从java 7才允许)
7.while和do-while循环的区别
while循环是先判断在执行,,第一次判断为false,那么循环体就一次都不执行。而do-while是先执行后判断,最少执行1次。如果while循环第一次判断为true, 则两种循环没有区别。
8.break和continue的作用
break用在switch和循环结构中,在循环结构中时会结束当前循环并退出当前循环体。默认是离for最近的循环,但也可以通过给循环起标签,指定break跳出哪个循环。break还可以退出switch语句,在每条语句后添加break,以防把该条之后的信息也输出。
continue也可以退出循环,但continue退出的是这一次循环,不是这一轮循环,退出后接着执行下一次循环,直至本轮循环结束。
9.递归的定义和优缺点
递归就是在方法中直接或间接调用自身算法的过程。每个递归都必须有一个结束条件,我们一般称之为递归出口。优点是使用递归解决问题会很简洁,但使用递归方法的话效率会很低,而且递归次数多的话会造成栈溢出,因此并不推荐用递归解决问题。