Java SE复习

目录

1. Java跨平台原理

2. &和&&区别和联系,|和||区别和联系;实际项目中,什么样情况用哪种

3. switch条件变量的取值类型

4. 数组查找操作:

5. 获取数组最大值和最小值操作:


1. Java跨平台原理

Java语言之所以流行,是和Java的很多优点分不开的。Java的最大优点是就是跨平台。Java的跨平台可以使用8个字概括:一次编译,到处运行

Java程序的跨平台主要是指(Java源代码编译后的)字节码文件可以在任何(具有Java虚拟机的)计算机或者电子设备上运行

Java语言的执行过程如图所示:

  1. Java程序的运行要经过编辑、编译、解释并执行三个阶段。
  2. Java源代码经过编译后生成字节码文件(.class)。字节码文件与平台无关的,不面向任何具体平台,只面向虚拟机。
  3. 字节码文件需要再解释成相应平台的机器码并运行。解释是通过Java虚拟机来执行的。Java虚拟机是可运行Java字节码文件的虚拟计算机。Java虚拟机(中的Java解释器)负责将字节码文件解释成为特定的机器码进行运行。不同平台的虚拟机是不同的,但它们都提供了相同的接口。

Java语言具有一次编译,到处运行的特点。是说编译后的.class可以跨平台运行。

Java语言可以跨所有的平台吗?不见得,要看是否提供并安装相应的虚拟机

可选

C语言跨平台的原理

C语言的源代码使用不同的编译器进行编译,编译之后直接生成指定平台的机器码。所以C语言的跨平台可以使用“多次编译,到处运行”来概括。

因为C语言的运行时直接运行机器码,而Java的字节码还有经过一个解释的过程才生成机器码再运行,所以从性能上讲,C语言的性能要高于Java

在互联网情况下,平台各异。所以Java的跨平台相比C语言的跨平台更具有优势

2. &和&&区别和联系,|和||区别和联系;实际项目中,什么样情况用哪种

&和&&是Java中的逻辑与运算符,都是双目运算符。如果两个操作数都是true,结果是true,否则是假;无论使用哪个运算符,对最终的运算结果时候没有影响的。

 (1)、&称为逻辑与运算符,&&称为短路与运算符。

对于&:无论任何情况,&两边的操作数都会参与计算。 7>8  &  7==7

对于&&:当&&左边的操作数为false时,&&右边的操作数将不参与计算,此时最终结果都为false。

生活案例:如果大明和二明都同意去颐和园参观,妈妈才会领他们去;结果妈妈问了大明,大明不去,就没有必要再问二明了

技术案例:登录成功需要用户名和密码都正确才成功,如果用户名已经错了,就没有必要判断密码了。if(“bjsxt”.equals(username) && “bjsxt”.equals(pwd)){ }

 (2)&还可以用作位运算符。当&两边操作数不是boolean类型时,而是整数类型时&用于按位与运算符的操作。但是&&没有这个位运算功能  5 & 6

无论使用哪个运算符,对最终的运算结果时候没有影响的。

推荐平时多使用&&,因为它效率更高些。

|||的联系和区别与&&&类似,此处不再重复。

可选

3. switch条件变量的取值类型

switchJava中的多重分支语句,只能进行等值判断,不能进行区间判断。其中条件变量的取值类型是该语句的一个需要重点掌握的内容。

条件变量的取值范围是

1)整数类型中的 byte、short、int。(long不可选)

2)字符类型中的char(可以理解为int)

3JDK1.5后增加了enum枚举类型

4JDK1.7后增加了String类型

不可以是

1) 整数类型long (整数中就它不可以)

2) Boolean类型(多重分支,boolean只有两个值,就比凑热闹了)

3)浮点类型float、double(不可以精确比较)

可选

switch中用到了break关键字,用来跳出switch语句;另外break还可以使用在循环语句中。

switch语句中还使用了default关键字,default关键字中还可以使用在接口中,用来表示在JDK8之后接口中定义的非抽象但是可以被实现类重写的方法

4. 数组查找操作:

定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。

public class TestArray {
    public static void main(String[] args) {
        //定义一个长度为10 的一维字符串数组
        String [] arr = new String[10];

        //在每一个元素存放一个单词
        arr[0] = "JavaSE";
        arr[1] = "MySQL";
        arr[2] = "JDBC";
        arr[3] = "MyBatis";
        arr[4] = "JSP/Servlet";
        arr[5] = "SpringMVC";
        arr[6] = "Spring";
        arr[7] = "SpringBoot";
        arr[8] = "SpringCloud";
        arr[9] = "架构";

        //从命令行输入一个单词
        Scanner input = new Scanner(System.in);//alt+enter
        System.out.println("请输入一个单词");
        String str  = input.next();

        //判断数组是否包含有这个单词
        int index = -1;//默认不包含
        for (int i = 0; i < arr.length ; i++) {
            if(str.equals(arr[i])){ //arr[i]== str比较的是地址
                index = i;
                break;
            }
        }

        //包含这个单词就打印出“Yes”,不包含就打印出“No”
        if(index ==-1){
            System.out.println("No");
        }else{
            System.out.println("Yes");
        }
    }
}

5. 获取数组最大值和最小值操作:

利用Java的Math类的random() 方法,编写函数得到0到n之间的随机数,n是参数。并找出产生50个这样的随机数中最大的、最小的数,并统计其中>=60的有多少个。

public class TestArray2 {
    public static void main(String[] args) {
        //定义一个数组,长度是50
        int arr [] = new int[20];

        //生成50个随机数并放入数组
        for (int i = 0; i < arr.length ; i++) {
            //生成一个随机数
            int elem =(int)( Math.random()*31);//[0,1) double---[0,31) double---[0,30] int
            //赋给数组元素
            arr[i] = elem;
        }
        //输出数组元素
        System.out.println(Arrays.toString(arr));

        //查询其中最大值和最小值
        int max = arr[0];
        int index = 0; //先假设第一个数最大数
        for (int i = 0; i < arr.length ; i++) {
            if(arr[i]>max){
                max = arr[i];
                index = i;
            }
        }
        System.out.println("max="+max+",index="+index);

        //统计其中>=60的有多少个
        int count = 0;//默认一个也没有
        for (int i = 0; i < arr.length ; i++) {
            if(arr[i]>22){
                count++;
            }
        }
        System.out.println("大于22的数的个数:"+count);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45859844/article/details/120422887
今日推荐