• Java-笔记3-复习


    1.“&”和“&&”的异同
    2.程序输出
    class OperatorTest {
        public static void main(String[] args) {
            boolean x = true;
            boolean y = false;
            short z = 40;
            if ((z++ == 40) && (y = true)) {
                z++;
            }
            if ((x = false) || (++z == 43)) {
                z++;
            }
            System.out.println("z = " + z);
        }
    }
    结果为: 44
    3.定义三个int型变量并赋值,使用三元运算符或者if-else获取这三个数中的较大数的实现
     
    int num1 = 10, num2 = 21, num3 = -21;
    if(num1 >= num1 && num1 >= num3){
      max = num1;
    }else if(num2 >= num1 && num2 >= num3){
      max = num2;
    }else{
      max = num3;
    }

    System.out.println("三个数中的最大值为:" + max)
    4.编写程序,声明2个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。否则,打印两数的乘积。

    double d1 = 12.3;
    double d2 = 32.1;
    if(d1 > 10 && d2 < 20){
      
    }else{
      
    }


    5. 交换两个变量值的代码的实现

    String s1 = "南京";
    String s2 = "北京";

    String temp = s1;
    s1 = s2;
    s2 = temp;
    1.算术运算符: + - + - * / % (前)++ (后)++ (前)-- (后)-- + 
    【典型代码】
            //除号:/
            int num1 = 12;
            int num2 = 5;
            int result1 = num1 / num2;
            System.out.println(result1);//2
            // %:取余运算
            //结果的符号与被模数的符号相同
            //开发中,经常使用%来判断能否被除尽的情况。
            int m1 = 12;
            int n1 = 5;
            System.out.println("m1 % n1 = " + m1 % n1);
    
            int m2 = -12;
            int n2 = 5;
            System.out.println("m2 % n2 = " + m2 % n2);
    
            int m3 = 12;
            int n3 = -5;
            System.out.println("m3 % n3 = " + m3 % n3);
    
            int m4 = -12;
            int n4 = -5;
            System.out.println("m4 % n4 = " + m4 % n4);
            //(前)++ :先自增1,后运算
            //(后)++ :先运算,后自增1
            int a1 = 10;
            int b1 = ++a1;
            System.out.println("a1 = " + a1 + ",b1 = " + b1);
            
            int a2 = 10;
            int b2 = a2++;
            System.out.println("a2 = " + a2 + ",b2 = " + b2);
            
            int a3 = 10;
            ++a3;//a3++;
            int b3 = a3;
            //(前)-- :先自减1,后运算
            //(后)-- :先运算,后自减1
            
            int a4 = 10;
            int b4 = a4--;//int b4 = --a4;
            System.out.println("a4 = " + a4 + ",b4 = " + b4);
    【特别说明的】
    1.//(前)++ :先自增1,后运算
     //(后)++ :先运算,后自增1
    2.//(前)-- :先自减1,后运算
      //(后)-- :先运算,后自减1
    3.连接符:+:只能使用在String与其他数据类型变量之间使用。
      
    2.赋值运算符:=  +=  -=  *=  /=  %= 
    【典型代码】
            int i2,j2;
            //连续赋值
            i2 = j2 = 10;
            //***************
            int i3 = 10,j3 = 20;
            int num1 = 10;
            num1 += 2;//num1 = num1 + 2;
            System.out.println(num1);//12
    
            int num2 = 12;
            num2 %= 5;//num2 = num2 % 5;
            System.out.println(num2);
    
            short s1 = 10;
            //s1 = s1 + 2;//编译失败
            s1 += 2;//结论:不会改变变量本身的数据类型
            System.out.println(s1);
    
    【特别说明的】
    1.运算的结果不会改变变量本身的数据类型
    2.
            //开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num = 10;)
            //方式一:num = num + 2;
            //方式二:num += 2; (推荐)
            
            //开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;)
            //方式一:num = num + 1;
            //方式二:num += 1; 
            //方式三:num++; (推荐)
    3.比较运算符(关系运算符): == != >  <  >=  <=  instanceof
    【典型代码】
            int i = 10;
            int j = 20;
    
            System.out.println(i == j);//false
            System.out.println(i = j);//20
    
            boolean b1 = true;
            boolean b2 = false;
            System.out.println(b2 == b1);//false
            System.out.println(b2 = b1);//true
    【特别说明的】
    1.比较运算符的结果是boolean类型
    2.>  <  >=  <= :只能使用在数值类型的数据之间。
    3. == 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
    Account acct1 = new Account(1000);
    Account acct2 = new Account(1000);
    boolean b1 = (acct1 == acct2);//比较两个Account是否是同一个账户。
    boolean b2 = (acct1 != acct2);//
    4.逻辑运算符:& &&  |  || !  ^
    【典型代码】
            //区分& 与 &&
            //相同点1:& 与  && 的运算结果相同
            //相同点2:当符号左边是true时,二者都会执行符号右边的运算
            //不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
            //开发中,推荐使用&&
            boolean b1 = true;
            b1 = false;
            int num1 = 10;
            if(b1 & (num1++ > 0)){
                System.out.println("我现在在北京");
            }else{
                System.out.println("我现在在南京");
            }
    
            System.out.println("num1 = " + num1);
            
    
            boolean b2 = true;
            b2 = false;
            int num2 = 10;
            if(b2 && (num2++ > 0)){
                System.out.println("我现在在北京");
            }else{
                System.out.println("我现在在南京");
            }
    
            System.out.println("num2 = " + num2);
    
            // 区分:| 与 || 
            //相同点1:| 与  || 的运算结果相同
            //相同点2:当符号左边是false时,二者都会执行符号右边的运算
            //不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
            //开发中,推荐使用||
            boolean b3 = false;
            b3 = true;
            int num3 = 10;
            if(b3 | (num3++ > 0)){
                System.out.println("我现在在北京");
            }else{
                System.out.println("我现在在南京");
            }
            System.out.println("num3 = " + num3);
    
    
            boolean b4 = false;
            b4 = true;
            int num4 = 10;
            if(b4 || (num4++ > 0)){
                System.out.println("我现在在北京");
            }else{
                System.out.println("我现在在南京");
            }
            System.out.println("num4 = " + num4);
    【特别说明的】
    1.逻辑运算符操作的都是boolean类型的变量。而且结果也是boolean类型
    5.位运算符:<<  >> >>> &  |  ^  ~
    【典型代码】
            int i = 21;
            i = -21;
            System.out.println("i << 2 :" + (i << 2));
            System.out.println("i << 3 :" + (i << 3));
            System.out.println("i << 27 :" + (i << 27));
    
            int m = 12;
            int n = 5;
            System.out.println("m & n :" + (m & n));
            System.out.println("m | n :" + (m | n));
            System.out.println("m ^ n :" + (m ^ n));
    【面试题】 你能否写出最高效的2 * 8的实现方式? 
    答案:2 << 3  或  8 << 1
    【特别说明的】
    1. 位运算符操作的都是整型的数据
    2. << :在一定范围内,每向左移1位,相当于 * 2
       >> :在一定范围内,每向右移1位,相当于 / 2
    
    典型题目:
    1.交换两个变量的值。
    2.实现60的二进制到十六进制的转换
    6.三元运算符:(条件表达式)? 表达式1 : 表达式2
    【典型代码】
    1.获取两个整数的较大值
    2.获取三个数的最大值
    【特别说明的】
    1. 说明
    ① 条件表达式的结果为boolean类型
    ② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
      如果表达式为true,则执行表达式1。
      如果表达式为false,则执行表达式2。
    ③ 表达式1 和表达式2要求是一致的。
    ④ 三元运算符可以嵌套使用
    2. 
    凡是可以使用三元运算符的地方,都可以改写为if-else
    反之,不成立。
    3. 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。
    流程控制
    顺序结构:程序从上到下执行。
    
    分支结构:
    if-else if - else
    switch-case
    
    循环结构:
    for
    while
    do-while
    章节练习题及面试题
    简答题
    标识符的命名规则需要注意哪几点?
    
    基本数据类型有哪几类?包含String吗?
    
    写出基本数据类型自动转化的流程图
    
    整型默认的是什么类型,浮点型(实数型)默认的是什么类型?
    
    对于包名,类名接口名,变量名和函数名,常量名我们习惯如何格式来命名?
    
    定义一个变量需要注意什么?
    
    
    强制类型转化可能出现的问题
    
    char型变量中能不能存贮一个中文汉字?为什么?
    答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,
    所以放一个中文是没问题的
    
    
    定义float f=3.4;是否正确?
    答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4
    
    String是最基本的数据类型吗
    答:基本数据类型包括byte、intcharlongfloatdouble、boolean和short。
    java.lang.String是java中定义的一个类,类都属于引用数据类型。
    
    根据运算符的功能,我们把运算符分成哪几类?
    
    Java有没有goto
    答:java中的保留字,现在没有在java中使用
    
    用最有效的的方法算出2称以8等于几
    答案:2<<3
    
    char型变量中是否可以存储一个汉字?
    能,因为Java一个字符是2个字节,每一个字符使用Unicode编码表示
    
    float f=3.4;是否正确,表达式15/2*2的值是多少
    答案:不正确,float f = 3.4F;
    答案:14
    
    Java的基本数据类型有哪些?String是基本数据类型吗?
    基本数据类型有:byte,short,int,long,float,double,char,boolean
    String是引用数据类型,不是基本数据类型
    
    
    以下代码的运行结果
        public static void main(String[] args) {
            char x = 'x';
            int i = 10;
            System.out.println(true? x : i);
            System.out.println(true? 'x' : 10);
        }
    答案:
    120
    x
    /*
     * 如果其中有一个是变量,按照自动类型转换规则处理成一致的类型;
     * 如果都是常量,如果一个是char,如果另一个是[0~65535]之间的整数按char处理;
     *             如果一个是char,另一个是其他,按照自动类型转换规则处理成一致的类型;
     */
    
    以下代码的执行结果
        public static void main(String[] args) {
            int a = 8, b = 3;
            System.out.println(a>>>b);
            System.out.println(a>>>b | 2);
        }
    答案:
    1
    3
    
    编程题
    为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
    //为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
    public class TestExer1 {
        public static void main(String[] args) {
            int hour = 89;
            int day = hour / 24;
            hour = hour % 24;
            System.out.println("为抵抗洪水,战士连续作战" + day + "天" + hour + "小时");
        }
    }
    
    
    今天是周二,100天以后是周几?
    //今天是周二,100天以后是周几?
    public class TestExer2 {
        public static void main(String[] args) {
            int week = 2;
            week += 100;
            week = week % 7;
            System.out.println("100天后星期" + week);
        }
    }
    
    算术运算符的使用
    class SuanShu{
        public static void main(String[] args){
            int a = 23;
            int b = 12;
            System.out.println(a + "+" + b + "=" + (a+b));
            int sum = a + b;
            System.out.println(a + "+" + b + "=" + sum);
            
            int sub = a - b;
            //System.out.println(a + "-" + b + "=" + a-b);//错误,原因是a + "-" + b + "=" + a的结果是字符串,字符串不能进行减法
            System.out.println(a + "-" + b + "=" + (a-b));
            System.out.println(a + "-" + b + "=" + sub);
            
            int mul = a * b;
            System.out.println(a + "*" + b + "=" + a*b);
            System.out.println(a + "*" + b + "=" + mul);
            
            //整数相除,只保留整数部分
            int div = a / b;
            System.out.println(a + "/" + b + "=" + a/b);
            System.out.println(a + "/" + b + "=" + div);
            
            double d = (double)a/b;//先把a的类型进行转换,转换成double类型,然后再和b相除
            System.out.println(a + "/" + b + "=" + d);
            
            int yu = a % b;
            System.out.println(a + "%" + b + "=" + yu);
            
            System.out.println("------------------特殊的取模----------------------");
            System.out.println(5%2);//1
            System.out.println(-5%-2);//-1
            System.out.println(-5%2);//-1
            System.out.println(5%-2);//1
            
            System.out.println("------------------负号----------------------");
            int num1 = 12;
            int num2 = -num1;
            System.out.println("num2=" + num2);
            
            System.out.println("------------------自增----------------------");
            int i = 0;
            System.out.println("自增之前i=" + i);
            i++;
            System.out.println("自增第一次之后i=" + i);
            ++i;
            System.out.println("自增第二次之后i=" + i);
            int j = ++i;//把i自增1,然后结果赋值给j,或者说,先算++i,然后再赋值
            System.out.println("自增第三次之后i=" + i);
            System.out.println("j="+j);
            int k = i++;//先算赋值,把i的值赋值给k,i原来是3,把3赋值给k,然后i在自增1,i变成4
            System.out.println("自增第四次之后i=" + i);
            System.out.println("k="+k);
            
            //面试题:陷阱题
            i = i++;//先赋值,把i原来的值重新赋值给i,不变,然后i自增,但是这个自增后的值没有在放回变量i的位置
            System.out.println("自增第五次之后i=" + i);
        }
    }
    
    
    考查运算符的优先级
    写出输出的结果.
    class Demo{
    public static void main(String[] args){
    int x=0,y=1;
    if(++x==y-- & x++==1||--y==0)
    System.out.println("x="+x+",y="+y);   //x = 2,y = 0;
    else
                System.out.println("y="+y+",x="+x);
    }
    }
    
    
    编写代码实现两个变量值交换,int m = 3, n =5;
    答案一:
    int temp = m;
    m = n;
    n = temp;
    答案二:
    m = m + n;
    n = m - n;
    m = m - n;
    答案三:
    m = m ^ n;
    n = m ^ n;
    m = m ^ n;
    
    如何求一个0~255范围内的整数的十六进制值,例如60的十六进制表示形式3C
    //方式一:自动实现
    String str1 = Integer.toBinaryString(60);
    String str2 = Integer.toHexString(60);
    
    //方式二:手动实现
    int i1 = 60;
    int i2 = i1&15;
    String j = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
    int temp = i1 >>> 4;
    i2 = temp & 15;
    String k = (i2 > 9)? (char)(i2-10 + 'A')+"" : i2+"";
    System.out.println(k+""+j);
    
    
    
    小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
    
        //小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。
        //它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
        public static void main(String[] args) {
            int h = 80;
            double s = (h - 32) / 1.8;
            System.out.println(h + "华氏度,是摄氏度" + Math.round(s));
        }
    
    
    练习前++,后++,三元运算符
    写出输出结果:
    class Demo{
    public static void main(String[] args){
    int a=3,b=8;
    
    int c=(a>b)?a++:b++;
    System.out.println("a="+a+"	b="+b+"	c="+c);  //
    
    int d=(a>b)?++a:++b;
    System.out.println("a="+a+"	b="+b+"	d="+d);  //
    
    int e=(a<b)?a++:b++;
    System.out.println("a="+a+"	b="+b+"	e="+e);  //
    
    int f=(a<b)?++a:++b;
    System.out.println("a="+a+"	b="+b+"	f="+f);  //
    }
    }
    
    比较 +  与  +=
    short s1 = 1; s1 = s1 + 1;有什么错? 
    short s1 = 1; s1 += 1;有什么错
    
    答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
    short s1 = 1; s1 += 1;(可以正确编译)
  • 相关阅读:
    free online Twitter video downloader All In One
    Game Development Essential Terms All In One
    Offscreen Canvas All In One
    前端性能优化系列之 Service Workers 实战教程 All In One
    前端性能优化系列之 Web Workers 实战教程 All In One
    河南美食阿利茄汁面 All In One
    free online Youtube video downloader All In One
    Leetcode 2264. 字符串中最大的 3 位相同数字(可以,已解决)
    多分类任务中不同隐藏层层数对实验结果的影响(使用GPU)
    Pytorch 损失函数总结
  • 原文地址:https://www.cnblogs.com/LXL616/p/10804726.html
Copyright © 2020-2023  润新知