热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java-笔记3-复习

1.“&”和“&&”的异同2.程序输出classOperatorTest{publicstaticvoidmain(String[]args)
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+"\tb="+b+"\tc="+c);  //

int d=(a>b)?++a:++b;
System.out.println("a="+a+"\tb="+b+"\td="+d);  //

int e=(a;
System.out.println("a="+a+"\tb="+b+"\te="+e);  //

int f=(ab;
System.out.println("a="+a+"\tb="+b+"\tf="+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;(可以正确编译)

 


推荐阅读
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • switch分支结构一、程序运行流程的分类1、顺序结构:根据程序顺序依次执行。2、分支结构:根据判断决定程序的执行顺序。3、循环结构。分支结构三要素&# ... [详细]
  • day04_流程控制
    流程控制在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
author-avatar
文弱书生_李
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有