02 Java基础语法(变量+数据类型+运算符)(下)

简介: 02 Java基础语法(变量+数据类型+运算符)

02 Java基础语法(变量+数据类型+运算符)(上):https://developer.aliyun.com/article/1580133

2.4 运算符
2.4.1 算数运算符

两个操作数进行计算

操作符 描述
+ 加、求和
- 减、求差
* 乘、求积
/ 除、求商
% 模、求余
int n1 = 10;
byte n2 =4;
System.out.println(n1/n2);  //2
//如果两个数字都是int整数,结果还是int整数
double r =n1/n2;
System.out.println(r); //2.0
double r1 =(double)n1/n2;
System.out.println(r1);  //2.5
System.out.println(5.2%3);  // 2.2
System.out.println(-5.2%3);  // -2.2
System.out.println(3%5);  //3  无法整除的,商0余3
System.out.println(6%10);  //  6
System.out.println(-6%10);  //  -6
System.out.println(5%-10);  //  5
System.out.println(1%10);  //  1
//4687,求各个位上数字的和25
    public static void main(String[] args) {
        int num = 4678;
        int ge = num%10;
        int shi = num/10%10;
        int bai = num/100%10;
        int qian = num/1000;
        int sum = ge +shi +bai +qian;
        System.out.println(sum);
    }
2.4.2 算数运算符:一元运算符

(只有一个操作数)

操作符 描述
++ 递增,变量值+1
- - 递减,变量值-1
int a = 3;int b = 4;
int c = (++b)*2-(a--)%4+(a++)*5-(--b)/2+(--a);
System.out.println(c);
// 10-3%4+10-2+2 =17
//b=5 a=2   a=3  b=4 a=2
int i =10;
i=i++; (int k = i++;i=k)
i=i++;
i=i++;
System.out.println(i); //10

笔试考点

public class Demo {
    public static void main(String[] args) {
        //笔试考点
        int a =10;
        int b = a ++;
        System.out.println("b = " + b); //ib = 10
        System.out.println("a = " + a); //ia = 11
        int c = ++a;
        System.out.println("c = " + c); //ic = 12
        System.out.println("a = " + a); //ia = 12
        System.out.println(a++ + ++a); //ia = 12+14=26
    }
}
2.4.3 赋值运算符

等号右边值赋值给等号左边的变量。

操作符 描述
= 直接赋值
+= 求和后赋值
-= 求差后赋值
*= 求积后赋值
/= 求商后赋值
%= 求余后赋值
//+=和+的区别
byte b = 127;
b+=1;  //输出-128  不会类型提升
b++; //输出-128  也不会类型提升
//b=b+1;  //编译不通过,会类型提升Incompatible types. Found: 'int', required: 'byte'

注意:运算后赋值(复合运算)的,不会自动类型提升(++ – += -= /= %= *=)

2.4.4 关系运算符

两个操作数进行比较,结果是一个布尔值(true / false)。

操作符 描述
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于

注意 float double 不要直接使用关系运算符比较(存储方式,精度丢失,近似存储,会出现误差)

用包装类double float提供的方法

2.4.5 逻辑运算符

两个boolean类型的操作数或表达式进行逻辑比较

操作符 语义 描述
&& 短路与(并且) 两个操作数,同时为真,结果为真
|| 短路或(或者) 两个操作数,有一个为真,结果为真
! 取反(非) 意为“不是”,真即是假,假即是真
int n1 =10;
int n2 =8;
System.out.println(n1<n2&&++n1>10);   //false &&短路与之后的不执行
System.out.println(n1);    //10 
System.out.println(n1>n2||++n1>10);   //ture ||短路或之后的不执行
System.out.println(n1);    //10 

前者false &&短路与之后的不执行

前者ture ||短路或之后的不执行

2.4.6 三元运算符

将判断后的结果赋,值给变量

操作符 语义 描述
? : 布尔表达式?结果1:结果2 当表达式结果为真,获得结果1当表达式结果为假,获得结果2
int java = 87;
String level = java>=90?"优秀":java>=80?"良好":"一般";
System.out.println(level);
//或者直接sout嵌套
int java = 92;
System.out.println(java>=90?"优秀":java>=80?"良好":"一般");
public class Demo {
    public static void main(String[] args) {
        //提示用户输入两个正整数并使用变量记录
        System.out.println("请输入两个整数");
        Scanner sc = new Scanner(System.in);
        int a =sc.nextInt();
        int b =sc.nextInt();
        //使用三目运算符找到最大值并打印
        int max = a > b ? a : b;
        System.out.println("最大值是 " + max);
        System.out.println("最大值是 " + (a > ib ? a : b));
    }
}
2.4.7 位运算符(详细见7种位运算符Markdown)

对数值类型数据进行按位操作;1表示true、0表示false。

操作符 语义 描述
& 按位与 二进制数据按位与操作
| 按位或 二进制数据按位或操作
~ 按位取反 二进制数据按位取反
^ 按位异或 二进制数据异或,相同为假、不同为真
>> 右移 二进制数据整体右移
<< 左移 二进制数据整体左移
>>> 无符号右移 二进制数据整体右移,符号位补0
public class Program {
    public static void main(String[] args) {
        int n1 = 6; //0000 0000 0000 0000 0000 0000 0000 0110
        int n2 = 11; //0000 0000 0000 0000 0000 0000 0000 1011
        System.out.println(n1&n2);  //2(0010)二进制数据按位与操作
        System.out.println(n1|n2);  //15 (1111)二进制数据按位或操作
        System.out.println(~n1);  //-7  即转换为1111111111111111111111111111111111111111111111111111111111111001按位取反(补码存储)
        System.out.println(n1^n2);  //13  (1101)按位异或,相同为假、不同为真
        
        int n11 = 5; //0000 0000 0000 0000 0000 0000 0000 0101
        int n22 = 7; //0000 0000 0000 0000 0000 0000 0000 0111
        System.out.println(n11&n22);  //5 (101)二进制数据按位与操作
        System.out.println(n11|n22);  //7 (111)二进制数据按位或操作
        System.out.println(~n11);  //-6  即转换为1111····1111 1010按位取反(补码存储)
        System.out.println(n11^n22);  //2  (010--2)按位异或,相同为假、不同为真
        //右移>>(相当于除2)左边补符号位
        int n3 = 20;    //二进制(1 0100)
        int n4=n3>>1;   //10(01010)  (最右右移1,最左补符号位,正数补0负数补1)
        int n5=n3>>2;   //5(101)
        int n6=n3>>5;   //0(移完了)
        int n7=n3>>32;  //32的倍数,不变
        //左移<<(相当于乘2)右边补0
        //无符号右移>>>(相当于除2)左边补0
        int n8 = 30;
        n8 = n8>>>1;  //15
        int n9 = -30;
        n9 = n9>>>1;  //2147483633
    }
}

右移>>(相当于除2)左边补符号位

左移<<(相当于乘2)右边补0

无符号右移>>>(相当于除2)左边补0

public class Program01 {
    //1.有一个整数8747,获取这个整数的二进制后四位
    //2.有一个整数8747,获取这个整数的二进制的第二个后四位
    public static void main(String[] args) {
        int x = 8747;
        //0010 0010 0010 1011
        System.out.println(x&0xF); //11
        System.out.println(x>>>4&0xF);//2
    }
}
//面试题:不使用第三个变量交换两个数字
public class Demo {
    public static void main(String[] args) {
        int x =10;int y = 20;
        //加减法;缺点,如果数据大可能会出现溢出
        x=x+y;
        y=x-y;
        x=x-y;
        //异或法
        x=x^y;
        y=x^y;
        x=x^y;
        System.out.println("交换后"+x+" "+y);
    }
}
2.4.7.1 字符串连接符:+

如果字符串和基本数据类型变量、常量连接以后,结果变成了字符串。

public class Demo1229 {
    public static void main(String[] args) {
        //提示用户输入一个正整数的秒数并使用变量记录
        //提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒
        System.out.println("请输入一个正整数的秒数:");
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();
        //将正整数的秒数拆分为时分秒后并使用变量记录
        //3666秒 =>1小时 1分钟 6秒钟
        //3666 / 3600 = 1小时   3666%3600 =66 /60=1分钟 3666%60=6秒钟
        int hour = num /3600; //拆分小时
        int min = num % 3600 / 60; //拆分分钟
        int sec = num % 60; //拆分秒钟
        //打印最终的拆分结果
        System.out.println("小时:" + hour + ",分钟:" + min + ",秒钟:" + sec);
        System.out.println("--------------------------------------------------------------------");
        //+可以作为字符串连接,又可以作为加法运算符
        //只要+两边的操作数中有一个操作数是字符串类型,则该+就被当做字符串连接符处理
        System.out.println(hour + min +sec);  //8
        System.out.println(hour + min +sec+""); //8
        System.out.println(hour + min +""+sec);  //26
        System.out.println(hour + ""+min +sec); //116
        System.out.println(""+hour + min +sec); //116
        System.out.println(""+(hour + min +sec));  //8
    }

}
2.4.8 运算符优先级

以下从上往下,优先级由高到低

操作符优先级 结合性
[ ] ( ) { } 从左向右
! ~ ++ – -(负号) 从右向左
* / % 从左向右
+ - 从左向右
<< >> >>> 从左向右
< <= > >= instanceof 从左向右
== != 从左向右
& 从左向右
^ 从左向右
| 从左向右
&& 从左向右
|| 从左向右
?: 从右向左
= 从右向左

优先级:

()优先级最高,赋值=优先级最低,算数大于关系,关系大于逻辑,乘除大于加减,短路与大于短路非

综合性:

大部分运算符从左向右结合,单目、三目、赋值结合性从右往左结合

public class Demo1229 {
    public static void main(String[] args) {
        //单目 结合性
        int a = 10;
        int b = -~++a;
        int c = (-(~(++a)));
        System.out.println(b); //12
        System.out.println(c); //13
        //三目
        int java =88;
        String level1 =(java>=90?"优秀":(java>=80?"良好":"一般"));
        String level2 =java>=90?"优秀":java>=80?"良好":"一般";
        System.out.println(level2);
        //++ --优先级  JVM栈,临时变量,还是先运算++
        int num1 = 10;
        int num2 =num1++ ;
        System.out.println(num2);//10
        System.out.println(num1);//11
    }
}
2.4.9 表达式

表达式:使用运算符连接的变量或字面值,并可以得到一个最终结果

2.5 控制台录入

控制台录入指的是通过键盘输入数据与程序之间进行交互

程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。


导包语法:import 包名.类名; //将外部class文件的功能引入到自身文件中。


步骤:


导入Scanner类,import java.util.Scanner,


创建Scanner类型的变量(对象)


使用Scanner类的方法


.nextInt(); //获得整数


.nextDouble(); //获得小数


.next(); //获得字符串


.ext().charAt(0);//获得单个字符 char x = input.next().charAt(0);


如果输入了不匹配的数据,则会产生 java.util.InputMismatchException

//格式类型
import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int age = input.nextInt();    //int
        System.out.println("请输入一个小数");
        double num = input.nextDouble();    //double
        System.out.println("请输入一个字符串");
        String name = input.next();   //String
        System.out.println("请输入一个字符");
        char x = input.next().charAt(0);    //字符串char
    }
}
//需求:控制台输入输出三门课程成绩,统计总分和平均分
import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入java成绩");
        int java = input.nextInt();
        System.out.println("请输入sql成绩");
        int sql = input.nextInt();
        System.out.println("请输入html成绩");
        int html = input.nextInt();
        System.out.println("总成绩为" + (java + sql + html));
        System.out.printf("平均分是%.2f",(java + sql + html) / 3.0);//保留两位小数
        System.out.printf("平均分是:"+"%.2f",(java + sql + html) / 3.0);
    }
}
2.6 编码(补充)

tem.out.println(“请输入一个字符”);

char x = input.next().charAt(0); //字符串char

}

}


```java
//需求:控制台输入输出三门课程成绩,统计总分和平均分
import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入java成绩");
        int java = input.nextInt();
        System.out.println("请输入sql成绩");
        int sql = input.nextInt();
        System.out.println("请输入html成绩");
        int html = input.nextInt();
        System.out.println("总成绩为" + (java + sql + html));
        System.out.printf("平均分是%.2f",(java + sql + html) / 3.0);//保留两位小数
        System.out.printf("平均分是:"+"%.2f",(java + sql + html) / 3.0);
    }
}
2.6 编码(补充)
目录
相关文章
|
18天前
|
Java Apache Maven
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
48 6
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
|
4天前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
14 3
|
1月前
|
Java 数据安全/隐私保护
java之基本语法
java之基本语法
23 6
|
4月前
|
存储 Java
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
36 0
|
5月前
|
存储 安全 Java
Java中的变量与数据类型——基本数据类型与引用数据类型深入剖析
Java中的变量与数据类型——基本数据类型与引用数据类型深入剖析
84 1
|
5月前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
30 0
|
5月前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
29 0
|
存储 Java
Java变量、数据类型和运算符 2
Java变量、数据类型和运算符
61 0
|
存储 SQL Java
Java变量、数据类型和运算符 1
Java变量、数据类型和运算符
62 0
|
存储 Java
java变量、数据类型和运算符-4
练习——升级“我行我素购物管理系统”,实现打印购物小票和计算积分功能
142 0