文章目录
1. 运算符
1.1算术运算符
-
+表示加法运算符
- –表示减法运算符
- *表示乘法运算符
- /表示除法运算符
- %表示取余运算符
/*编程实现算术运算符的使用*/
public class TestAri{
public static void main(String[] args){
//1.声明两个int类型的变量并指定初始值
int a = 10;
int b = 3;
//2.计算加减乘除取余运算并打印
int c;
c = a + b;
System.out.println("c ="+ c);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
}
}
注意事项:
(1)当两个整数相除时,则结果取整数部分丢弃小数部分;
(2)若希望保留小数部分,则具体方式如下:
a.将其中一个操作数强制转换为double类型再进行运算即可;
b.让其中一个操作数乘以1.0提升后在进行运算即可;
(3)0不能做除数,0.0可以做除数,但结果为无穷;
(4)+既可以表示字符串连接符,也可以表示加法运算符,具体区分方法:
当+两端的操作数只要有一个是字符串时,则按照字符串连接符处理,否则看做加法运算符;
/*
编程使用算术运算符来实现时间的拆分
*/
import java.util.Scanner
public class TestAriSplit{
public static void main(String[] args){
//1、提示用户输入描述并使用变量记录
System.out.println("请输入正整数的秒数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//2、使用算术运算符拆分为时分秒并单独使用变量记录
int h = num / 3600;
int m = num % 3600 /60;
int s = num % 60;
//3、打印最终的结果
System.out.println("换算为"+ h +"小时" + m +"分钟"+ s +"秒");
}
}
1.2关系/比较运算符
大于 > >= 大于等于 < 小于 <=小于等于 == 等于 !=不等于
所有关系运算符作为最终运算的表达式结果为boolean类型,只有true 和 false。
/*编程实现关系运算符的使用*/
public class TestRelation{
public static void main(String[] args){
//1.声明两个int类型的变量并指定初始值
int a = 3;
int b = 2;
//2.使用关系运算符来判断大小关系并打印出来
System.out.println(a > b); //true
System.out.println(a >= b);//true
System.out.println(a < b);//false
System.out.println(a <= b);//false
System.out.println(a == b);//false
System.out.println(a != b);//true
}
}
/*提醒用户输入一个整数,使用关系运算符判断该整数是否为负数,若是则打印true,否则打印false。*/
import java.util.Scanner;
public class Lianxi{
public static void main(String[] args){
//1.提醒用户输入一个整数
System.out.println("请输入一个整数:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
//2.比较
System.out.println(a < 0);
}
}
1.3自增减运算符
++ 表示自增运算符,让变量自身的数值加1作为最新的数据;
– 表示自减运算符,让变量自身的数值减1作为最新的数据。
/*编程实现自增减运算符的使用*/
public class Testself{
public static void main(String[] args){
//1.声明一个int类型的变量并指定初始值
int ia = 10 ;
System.out.println("ia ="+ ia);
System.out.println("----------------");
//2.使用自增减运算符进行测试
ia++;
System.out.println("ia++ ="+ ia);
ia--;
System.out.println("ia-- ="+ ia);
//3.见识一下++运算符放在变量两侧不同位置的区别
++ia;
System.out.println("ia =" + ia);
System.out.println("----------------");
System.out.println(ia++);//11
System.out.println("ia =" + ia);//12
System.out.println(++ia);//13
System.out.println("ia =" + ia);//13
}
}
1.4逻辑运算符
&& 表示逻辑与运算符,相当于"并且",同真为真,一假为假。
|| 表示逻辑或运算符,相当于“或者”,一真为真,同假为假。
! 表示逻辑非运算符,相当于“取反”,真为假,假为真。
短路特性:
对于逻辑与来说,当第一个操作数为假时,则整个表达式为假,此时跳过第二个操作数的判断;
对于逻辑或来说,当第一个操作数为真时,则整个表达式为真,测试跳过第二个操作数的判断。
/*代码实现逻辑运算符的应用*/
public class Testlogic
{
public static void main(String[] args){
//1.设置两个整型变量并赋初值
int a = 10;
int b = 9;
int c = 9;
System.out.println((a==b)&&(b == c));
System.out.println("------------");
boolean d = true;
boolean e = false;
System.out.println(d && e);
System.out.println(d || e);
System.out.println(!d);
}
}
/*提示用户输入一个正整数,使用逻辑运算符判断是否为三位数,若是则打印true,否则打印false*/
import java.util.Scanner;
public class sanweishujudge{
public static void main(String[] args){
//1.提醒用户输入
System.out.println("请输入一个正整数:");
Scanner sc = new Scanner(System.in);
int d = sc.nextInt();
//2.judge
System.out.println((d/1000 == 0) && (d/100 > 0) && (d/100 <10));
System.out.println(d>=100 && d<1000);
System.out.println("------------");
int a = 3;
int b = 5;
boolean c = (++a == 3)&&(++b == 5);
System.out.println("c = "+ c); //false
System.out.println("a = "+ a); //4
System.out.println("b = "+ b); //5 b未进行计算
}
}
1.5条件/三目运算符
条件表达式?表达式1:表达式2
=>判断条件表达式是否成立
=>成立,则执行表达式1
=>不成立,则执行表达式2
/*提醒用户输入一个整数,使用关系运算符判断该整数是否为负数,若是则打印true,否则打印false。*/
import java.util.Scanner;
public class Lianxi1{
public static void main(String[] args){
//1.提醒用户输入一个整数
System.out.println("请输入一个整数:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
//2.比较
System.out.println(a < 0 ?"负数":"非负数");
}
}
/*提示用户输入两个整数,并使用三目运算符找到最大值并打印*/
import java.util.Scanner;
public class compare{
public static void main(String[] args){
//1.提醒用户输入
System.out.println("请输入两个整数:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
//2.比较
System.out.println(a>b?a:b);
}
}
1.6赋值运算符
(1)简单赋值
= 表示赋值运算符,用于使用=右侧的数据来给=左侧变量赋值,也就是覆盖变量原来数值;
a == 5 用于判断a是否等于5
5 == a 用于判断5是否等于a,从结果来说等价,推荐使用该方式
a = 5 用于将数据5赋值给变量a,覆盖原来的数值
5 = a 编译出错
(2)复合赋值
+= 、-=、*=、…
/*编程实现赋值运算符的使用
*/
public class TestAssign{
public static void main(String[] args){
int a = 3;
a += 2; //a = a + 2;
System.out.println("a="+ a);
System.out.println("--------");
byte b = 3;
b += 2;
//b = b + 2;//TestAssign.java:10: 错误: 不兼容的类型: 从int转换到byte可能会有损失
System.out.println("b="+b);
}
}
如:
byte b1 = 5;
b1=b1+2; => b1 += 2; 真正等价的是:b1 = (byte)(b1+2);
1.7移位运算符(了解)
<< 表示左移运算符,用于将二进制位向左移动,右边使用0填充;
// >>表示右移运算符,用于将二进制位向右移动,左边使用符号位填充;
// >>> 表示无符号右移运算符,用于将二进制向右移动,左边使用0填充。
/*编程实现移位运算符的使用*/
public class TestMove
{
public static void main(String[] args){
byte b = 10;
System.out.println("b="+b); //b=10
System.out.println(b << 2);
//表示将b的二进制向左移动2位
// 10 : 0000 1010 => 0010 1000 == 40
System.out.println(b >> 2); //000000 10 == 2
System.out.println(b >>> 2);//2
}
}
1.8位运算符
& 表示按位与运算符,就是按照二进制位进行与运算,同1为1,一0为0;
| 表示按位或运算符,就是按照二进制位进行或运算,一1为1,同0为0;
^ 表示按位异或运算符,相同为0,不同为1.
~表示按位取反运算符,1为0,0为1.
/*编程实现位运算符的使用*/
public class TestBit
{
public static void main(String[] args){
byte a = 5; // 0000 0101
byte b = 11; // 0000 1011
System.out.println(a & b); // 0000 0001
System.out.println(a | b); // 0000 1111
System.out.println(a ^ b);// 0000 1110
System.out.println(~a); // 1111 1010
}
}
1.9运算符的优先级
- ()的优先级极高
- = 的优先级极低
- */%的优先级高于±,同级的运算符从左往右依次计算
2.分支结构
2.1基本概念
在某些特殊场合,需要进行条件的判断并作出选择时,则使用分支结构。
2.2if分支结构
(1)语法格式
if(条件表达式){
语句块;
}
(2)执行流程
判断条件表达式是否成立
=》如果成立,执行语句块;
=》不成立,则跳过语句块;
/*编程实现if分支结构模拟网吧上网过程*/
import java.util.Scanner;
public class TestIf{
public static void main(String[] args){
//1.提示用户输入年龄信息并使用变量记录
System.out.println("请输入年龄:");
Scanner sc = new Scanner(System.in);
int age=sc.nextInt();
//2.使用if分支结构判断是否成年,若成年则允许上网
if(age >= 18){
System.out.println("开心的浏览网页---");
}
//3.无论是否成年,则最终无奈回家
System.out.println("无奈回家");
}
}
/*提示用户输入两个整数,使用if分支结构找到最大值并打印*/
import java.util.Scanner;
public class Maxx{
public static void main(String[] args){
//1.提醒输入
System.out.println("请输入两个数字:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
//2.if判断
if(a >= b){
System.out.println("最大值为:"+a);
}
if(a < b){
System.out.println("最大值为:"+b);
}
int max = a;
if(max < b){
max = b;
}
System.out.println("最大值是:"+max);
}
}
2.3if-else 分支结构
(1)语法格式
if(条件表达式)
{
语句块1;
}
else{
语句块2;
}
(2)执行流程
判断条件表达式是否成立,
=》成立,则执行语句块1;
=》不成立,则执行语句块2;
/*编程实现if—else分支结构的使用,模拟查询考试成绩的过程*/
import java.util.Scanner;
public class TestIfElse{
public static void main(String[] args){
//1.提示用户输入成绩并使用变量记录
System.out.println("请输入成绩:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
//2.使用if-else分支结构判断考试成绩是否及格并给出提示
if(a >= 60)
{
System.out.println("恭喜通过");
}
else{
System.out.println("下学期补考");
}
//3.打印一句经典语录
System.out.println("世界上最遥远的距离不是生与死,而是你在if我在else,看似相交却又永远分离!");
}
}
/*提示用户输入一个整数,使用if-else分支结构判断该数是负数还是非负数*/
import java.util.Scanner;
public class Judge{
public static void main(String[] args){
System.out.println("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
if(a < 0){
System.out.println("该数为负数");
}
else{
System.out.println("该数为非负数");
}
}
}
2.4if-else if-else分支结构
(1)语法格式
if(条件表达式1){
语句块1;
}
else if(条件表达式2){
语句块2;
}
。。。。
else{
语句块n;
}
(2)执行流程
判断条件表达式1是否成立
=》 成立,执行语句块1;
=> 不成立,判断条件表达式2是否成立
=》成立,执行语句块2;
=》不成立,执行语句块n;
/*编程使用elseif分支结构使用,模拟购票的过程*/
import java.util.Scanner;
public class Elseif{
public static void main(String[] args){
//1.提示用户输入身份信息并使用变量记录
System.out.println("请输入您的身份信息:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
//2.根据不同的身份给出不同的提示
if("军人".equals(str)){
System.out.println("请免费乘车");
}else if("学生".equals(str)){
System.out.println("半价");
}else{
System.out.println("全价票");
}
//3.打印一句话
System.out.println("开心上车");
}
}
/*编程使用elseif分支结构使用,判断数字的过程*/
import java.util.Scanner;
public class Elseifs{
public static void main(String[] args){
//1.提示用户输入
System.out.println("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num < 0){
System.out.println(num +"是负数");
}else if(num > 0)
{
System.out.println(num +"是正数");
}else
{
System.out.println(num +"是零");
}
}
}
2.5 switch-case分支结构
(1)语句格式
switch(变量/表达式){
case 字面值1:语句块1;break;
case 字面值2:语句块2;break;
case 字面值3:语句块3;break;
。。。。。
default:语句块n;
}
(2)执行流程
获取变量/表达式的数值 =》 判断是否与字面值1匹配
=》 若匹配,则执行语句块1 =》 执行break跳出该结构
=》 若不匹配,则判断是否与字面值2匹配
=》 若匹配,则执行语句块2 =》 执行break跳出该结构
。。。
=》 若不匹配,则执行语句块n
/*编程使用switch-case分支结构实现成绩等级的判断*/
import java.util.Scanner;
public class Score{
public static void main(String[] args){
//1.提示用户输入成绩
System.out.println("请输入你的成绩:");
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
//2.判断成绩所在的等级并打印出来
/*if(s < 60){
System.out.println("E");
}else if(s < 70){
System.out.println("D");
}else if(s<80){
System.out.println("C");
}else if(s < 90){
System.out.println("B");
}else if(s<=100){
System.out.println("A");
}else{
System.out.println("输入错误");
}*/
switch(s/10){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("E");break;
case 6:
System.out.println("D");break;
case 7:
System.out.println("C");break;
case 8:
System.out.println("B");break;
case 9:
case 10:
System.out.println("A");break;
default:
System.out.println("输入错误!!!");
}
}
}
/*编程使用switch-case分支结构实现成绩等级的判断*/
import java.util.Scanner;
public class UserSelect{
public static void main(String[] args){
//1.提示用户输入对应操作的数字
System.out.println("请输入对应操作的数字:");
System.out.println("1.显示所有用户");
System.out.println("2.增加新用户");
System.out.println("3.修改用户信息");
System.out.println("4.显示删除用户");
System.out.println("5.退出系统");
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
switch(s){
case 1:
System.out.println("显示所有用户");break;
case 2:
System.out.println("增加新用户");break;
case 3:
System.out.println("修改用户信息");break;
case 4:
System.out.println("显示删除用户");break;
case 5:
System.out.println("5.退出系统");break;
default:
System.out.println("输入错误!!!");
}
}
}