jdk,jre,jvm分别是什么?
jre是java的运行环境,jdk是java的开发工具包,jvm是java虚拟机。jre包含了jvm,jdk又包含了jre,所以安装时jre可以不用安装,直接安装jdk。
java环境配置注意点
classpath:临时环境变量(早期使用,现在不用)
classpath环境执行流程:在配置的临时环境变量的路径寻找是否存在.class文件,如果存在,则执行,如果不存在,则无法加载主类。
path环境执行流程:先在当前目录寻找.java文件,如果存在,执行,不存在,再去path路径查找,存在则执行,不存在,不执行。
类型转换注意问题
1.默认类型转换 byte,short,char三者不会相互转换,一旦三者中间的某个类型参与运算,提升为int类型。
2.强制类型转换 会损失数据的精度,能不强转尽量不强转,使用于基本数据类型和引用数据类型。 变量相加时,先判断类型,然后看是否存在默认提升数据类型,接受数据类型是否符合。 常量相加时,先相加,然后看结果是否在接受数据类型的范围内。
举例子:
short s = 1;
s = s + 1; 本句是错误的,正确写法s = (short)(s + 1);
s += 1;
由此例子可以看出s = s + 1相当于s += 1;s += 1等价于s =(short)(s + 1)。
逻辑表达式易错点:
逻辑双与&&与逻辑单与&区别 &&连接的表达式左边如果为false,右边的表达式不执行.&连接的表达式左右都执行.
逻辑双或||与逻辑单或|区别 ||连接的表达式左边如果为true,右边的表达式不执行.|连接的表达式左右都执行. 位异或^特点:
当一个数据对另一个数据异或两次,其值是它本身. aba = b
三元运算符与if else区别
相同点:两者都可以求两个数或者三个数的最大值或者最小值 不同点:三元运算符连接的是两个数据的数据值(针对数据值进行比较或者判断)
if格式是一种流程控制语句,不仅仅可以判断两个数值,还可以操作具体语句
总之,三元运算符能做的,if可以做,三元运算符不能做的,if也可以做.(在开发中,针对业务逻辑判断使用if)
if esle求最大值:
import java.util.Scanner;
class IfDemo04{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入三个数字:");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int max;
if(a>b){
if(a>c){
max = a;
}else{
max = c;
}
}else{
if(b>c){
max = b;
}else{
max = c;
}
}
System.out.println("max =" + max);
}
}
三元运算符比较两个数,三个数最大值:
import java.util.Scanner;
class Test01{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("输入两个整数:");
int a = sc.nextInt();
int b = sc.nextInt();
int max = a>b?a:b;
System.out.println("max =" + max);
System.out.println("============================");
System.out.println("输入三个整数:");
int a1 = sc.nextInt();
int b1 = sc.nextInt();
int c = sc.nextInt();
int temp = a1>b1?a1:b1;
int max1 = temp>c?temp:c;
System.out.println("max1 =" + max1);
}
}
有关switch的知识
switch后面的表达式可以是什么类型?
可以是byte,short,int,char
jdk1.5后可以跟枚举(enum)类型
jdk1.7后可以跟string类型
switch语句注意事项:
1.default语句可以放在任何位置,不影响执行流程,如果在语句中,需要加break,否则会造成case穿透.
2.switch语句的结束条件:(1)遇见break结束(2)程序默认执行到末尾
3.case语句后面的值,只能是常量,不能是变量.