zoukankan      html  css  js  c++  java
  • 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;(可以正确编译)
  • 相关阅读:
    win7 下加载MSCOMCTL.OCX
    getGLES1ExtensionString: Could not find GLES 1.x config!
    IUnknown(TVarData(Params[0]).VPointer) as Range
    win8 VB6打开提示MSCOMCTL.ocx未注册
    服务端接口处理流任务要如何返回?
    flink之kafka生产和消费实战-将生产数据存放到mongodb中
    初识doris的那些基本概念
    bash常见用法
    sonar p3c规则配置
    sonar之gitlab ci 在gradle项目的实践(汉化、branch、 commit提交评论)
  • 原文地址:https://www.cnblogs.com/LXL616/p/10804726.html
Copyright © 2011-2022 走看看