day03

1,算术运算符

分类:
+	-	*	/	%
运算规则:

​ + - * 都跟小学里面一模一样。

​ 除法跟以前是不一样的。

  • 在Java中,整数相除,结果只能得到整数。
  • 在Java中,小数相除,结果有可能是不精确的。

案例:

// 除法 运算符
// 1,在代码中除法运算符如何打出来
// 2,除法在代码中的细节

int a1 = 10;
int b1 = 2;
int result1 = a1 / b1;
System.out.println(result1);


//在Java中整数相除,结果只能得到整数。
int a2 = 10;
int b2 = 3;
int result2 = a2 / b2;
System.out.println(result2);//3

//在Java中小数相除,结果有可能是不精确的。
//如果我们要精确的运算,会在就业班再次学习。
double a3 = 10.0;
double b3 = 3.0;
double result3 = a3 / b3;
System.out.println(result3);

2,% 取余 取模

运算规则:

​ 获取余数。

案例1:

// % 取余 取模
int a = 10;
int b = 2;
int result = a % b;
System.out.println(result);//0
//因为10除以2,是可以整除的,所以商5余0.
//%获取的是余数,所以,结果就是0

案例2:

// % 取余 取模
int a = 10;
int b = 3;
int result = a % b;
System.out.println(result);//1
//因为10除以3,是不可以整除的,所以商3余1.
//%获取的是余数,所以,结果就是1

应用场景:

​ 1.判断一个数小数点后面有没有数值

​ 1.1 %1 得到结果肯定不是0

​ 1.0 %1 得到为0

​ 2.判断一个数是偶数还是奇数

​ 1% 2 // 看 1 能不能被2整除

​ 3.斗地主

​ 发牌, 三个人

​ 可以给每个牌定义编号

​ 牌编号% 3 结果为0,发给玩家1

​ 1 发给玩家2

​ 2 发给玩家3

3,字符串+的操作

运算规则:

​ 字符串+任意的数据类型,任意的数据类型+字符串。

都是把里面的内容原样拼接在一起。

重点:(判断技巧)

​ 如果有多个+连续。

​ 从左到右依次+,如果在这个过程中,没有字符串,那么就是正常的相加。如果有字符串,就是拼接操作。

案例1:

System.out.println('a' + "itheima");//aitheima

案例2:

System.out.println(1 + 2 + "abc" + 2 + 1);//3abc21
第一步:1+2。在这个过程中,没有字符串,所以进行正常的相加。结果为3.
第二步:3+"abc"。在这个过程中,有字符串,所以进行拼接操作。结果为一个新的字符串 "3bac"
第三步:"3bac"+2。在这个过程中,有字符串,所以进行拼接操作。结果为一个新的字符串 "3abc2"
第四步:"3abc2"+1。在这个过程中,有字符串,所以进行拼接操作。结果为一个新的字符串 "3abc21"

案例3:

System.out.println('a' + "bcd" + 1);//abcd1
第一步:'a' + "bcd"。在这个过程中,有字符串。所以进行拼接操作。结果为一个新的字符串"abcd"
第二步:"abcd" + 1 。在这个过程中,有字符串。所以进行拼接操作。结果为一个新的字符串"abcd1"

案例4:

System.out.println(1 + 'a' + "bcd" + 2 + 1);//98bcd21
第一步:1 + 'a'。在这个过程中,没有字符串。所以进行正常的加法运算。结果为98.
第二步:98 + "bcd"。在这个过程中,有字符串。所以进行拼接操作。结果为一个新的字符串"98bcd"
第三步:"98bcd" + 2。在这个过程中,有字符串。所以进行拼接操作。结果为一个新的字符串"98bcd2"
第四步:"98bcd2" + 1。在这个过程中,有字符串。所以进行拼接操作。结果为一个新的字符串"98bcd21"
字符串拼接的练习:
//定义一个变量记录姓名
String name = "播仔";
//定义一个变量记录年龄
int age = 2;
//定义一个变量记录身高
double height = 1.5;
//定义一个变量记录性别
char gender = '公';
//定义一个变量记录爱好
String hobby = "唱跳RapJava";

System.out.println("姓名为:" + name);
System.out.println("年龄为:" + age);
System.out.println("身高为:" + height);
System.out.println("性别为:" + gender);
System.out.println("爱好为:" + hobby);
public class Test{
	public static void main(String[]args){
		//定义一个变量记录姓名
		String name = "ywk";
		//定义一个变量记录年龄
		int age = 21;
		//定义一个变量记录性别
		char gender = '男';
		//定义一个变量记录身高
		float hight = 1.70F;
		//定义一个变量记录爱好
		String hobby = "java.电脑,游戏";
		System.out.println("姓名为:"+name);
		System.out.println("年龄为:"+age);
		System.out.println("性别为:"+gender);
		System.out.println("身高为:"+hight+"米");
		System.out.println("爱好是:"+hobby);
	}
}
案例:获取一个数字上个位,十位,百位
//定义一个变量
int number = 123;
//获取这个数字的个位
int ge = number % 10; //余 3
//获取十位
int shi = number / 10 % 10;// 123 / 10 = 12
//12 % 10 = 商1余2  结果为2
//获取百位
int bai = number / 100 % 10; //123/ 100 = 1
System.out.println(ge);
System.out.println(shi);
System.out.println(bai);
public class Test01{
	  public static void main(String[] args){
		//定义一个变量
		int number = 123;
		//获取这个数字的个位.
		int ge = number% 10;//%123/10---商12 余 3
		//获取这个数字的十位.
		int shi = number/10%10;  //  123/10=12 整数除整数只能取到整数
		                          //   12%10 商 1 余2 此时结果为 2
		//获取这个数字的百位
		//int bai = number/100  // 123 /100 =1 
		int bai = number/100%10;   // 123 /100 =1 余数为1
		System.out.println(ge);
		System.out.println(shi);
		System.out.println(bai);
	}
}

公式:

如果要获取一个数的个位: 数 % 10

如果要获取一个数的十位: 数 / 10 % 10

如果要获取一个数的百位: 数 / 100 % 10

如果要获取一个数的千位: 数 / 1000 % 10

如果要获取一个数的万位: 数 / 10000 % 10

4,赋值运算符

= +=

运算规则:

=:就是把右边赋值给左边。

int a = 10;//右边整数常量赋值给左边变量a
int b =a;//右边变量里面的值赋值给左边变量b

+=:把左边和右边进行相加,再把最终的结果赋值给左边。

int a = 1;
int b = 2;
a+=b;
System.out.println(a);//3
System.out.println(b);//2

//先把左边a和右边b进行相加,把结果3赋值给左边的变量a
//对右边的变量b是没有任何影响的。
//a += b 相当于 a = a + b; 
+=细节:

底层包含了一个强制类型的转换

byte a = 1;
byte b = 2;
a+=b;
System.out.println(a);//3
System.out.println(b);//2

//a+=b 相当于a = a + b;
//因为变量a和变量b是byte类型,所以在参与运算的时候,类型会自动提升为int。
//a = a + b等号的右边,其实就是两个int相加。
//把一个int赋值给左边的byte,大的给小的,就报错了。
//而代码真正运行的时候没有报错,所以,我们推断+=底层隐藏了一个强制类型转换。

所以,+= 真正的其实是下面的过程:

byte a = 1;
byte b = 2;
a+=b;
//a+=b,相当于 a = (byte)(a + b);
//+=底层隐含了一个强制类型的转换

5,自增自减运算符

重点掌握:自增自减运算符单独写一行时的运算逻辑。

运算规则:

​ 自增自减运算符是针对于变量而言的。
​ 不能拿着常量去自增,自减。

​ ++ 把变量里面的值+1
​ – 把变量里面的值-1

案例一:

int age = 16;
age++;//把变量里面的值+1,此时变量里面记录的值为:17
System.out.println(age);//17

++age;//把变量里面的值+1,此时变量里面记录的值为:18
System.out.println(age);//18

案例二:

int number = 10;
number--;//把变量里面的值-1.此时变量里面记录的值为:9
System.out.println(number);//9
--number;//把变量里面的值-1.此时变量里面记录的值为:8
System.out.println(number);//8

称呼:

​ a++;后++

​ ++a;先++

注意点:不管是先++,还是后++,单独写成一行的时候,运算规则是一模一样的。这个也是要大家重点掌握的。

了解:

​ 后++ 先用后加

​ 规则:先把原来的值拿出来参与运算,然后再进行自增

​ 案例:

int a = 10;
int b = a++;
System.out.println(a);//11

//先把原来的值10拿出来,赋值给b。
//然后再自增。
System.out.println(b);//10

​ 先++ 先加后用

​ 规则:先进行自增,然后再把自增之后的结果参与运算

​ 案例:

int a = 10;
int b = ++a;
System.out.println(a);//11
//先进行自增,变量a里面的值已经为11了。然后再把自增之后的结果11赋值给b。
System.out.println(b);//11

案例:

int x = 10;
//先把原来的值拿出来参与运算,然后再进行自增
//先把原来的值10拿出来赋值给y,然后再进行自增,所以第二行代码执行完毕之后:x=11 y=10
int y = x++;

//在开始执行第三行代码的时候,x的值是为11
//先进行自增,然后再把自增之后的结果参与运算
//先把x的值进行自增,变成12,然后再把自增后的结果赋值给z。所以第三行代码执行完毕之后:x=12 z=12
int z = ++x;

//因为上面自增了两次,所以x的值就是12.
System.out.println(x);//12
System.out.println(y);//10
System.out.println(z);//12

6,关系运算符

又叫:比较运算符

注意点:
  • 大于等于和小于等于的书写
    • 大于等于 >=
    • 小于等于 <=
  • 千万不要把==写成=
    • ==是判断
    • =是赋值
案例:
int a = 10;
int b = 20;
//==
System.out.println(a == b);//false
//!=
System.out.println(a != b);//true
//>
System.out.println(a > b);//false
//>=
System.out.println(a >= b);//false
//<
System.out.println(a < b);//true
//<=
System.out.println(a <= b);//true

7.逻辑运算符

& | ! ^

//逻辑与(且) --- 只要两都是真,结果才是真。
// 只要有一个为假,那么结果就是假。
System.out.println(true & true);//true
System.out.println(true & false);//false
System.out.println(false & true);//false
System.out.println(false & false);//false


//逻辑或  --- 只要两都是假,结果才是假。
//只要有一个为真,那么结果就是真。
System.out.println(true | true);//true
System.out.println(true | false);//true
System.out.println(false | true);//true
System.out.println(false | false);//false

//逻辑非 --- 取反
System.out.println(!false);//true
System.out.println(!true);//false
建议:取反最多只能写一个。
不能这么写:!!false
    
    
//^  了解一下就可以了
//逻辑异或(^)  相等就是false
//两边不等就是true
System.out.println(true ^ true);//false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true
System.out.println(false ^ false);//false 
应用场景:

在登录的时候,用户会把用户名和密码都传递给服务器。

用户名正确 & 密码正确 //正确的
用户名正确 | 密码正确
第一个老丈母娘要求:要么有房,要么有车。才能把我的小棉袄穿走啊。
有房 & 有车
有房 | 有车//正确的
第二个老丈母娘要求:既要有房,又要有车。才能把我的小棉袄穿走啊。
有房 & 有车//正确的
有房 | 有车

核心:

&:需要两边同时满足条件时。

|:两边只要有一个满足条件时。(两者选其一)

练习选择:

有个当官买卖 & 貌美如花的老婆 & 不错的小买卖

8,短路逻辑运算符

分类:

短路与&& 短路或||

&& 案例:

在登录的时候,用户会把用户名和密码都传递给服务器。

用户名正确 && 密码正确
//如果用户名已经输入错误了,那么密码就没有执行的必要了。
//如果用户名输入正确了,那么密码就有比较的必要。


用户名正确 & 密码正确
//不管你用户名输入的正确的还是错误的,那么右边的密码都会进行比较。

结论1:短路&&,一旦左边能确定最终的结果,那么右边就不会执行了。

false(用户名错误) && … //右边此时就不需要比较了。从而提高了程序的运行效率。

结论2:&&的执行效率要更高。

|| 案例:
老丈母娘要求:要么有房,要么有车。才能把我的小棉袄穿走啊。
有房 || 有车
//情况一:首先先看||的左边,此时发现,你已经有房了。那么就不需要再看右边有没有车了。此时牵手成功。
//情况二:首先先看||的左边,此时发现,暂时还没有方法。那么就需要看右边有没有车了。


有房 | 有车
//不管你有没有房,那么左右两边都会去看。

结论1:短路||,一旦左边能确定最终的结果,那么右边就可以不需要执行了。

结论2:||的执行效率要更高。

9,逻辑运算符的小结:

用的比较多的建议:

​ && || !

10,三元表达式

格式:

​ 关系表达式 ?表达式1 : 表达式2 ;

在这个格式当中,问号和冒号是固定格式。分号表示语句结束。

执行过程:

​ 首先计算关系表达式的值。这个值必须是一个布尔类型的结果。

​ 如果为true,那么表达式1的结果,就是整个三元表达式的结果。

​ 如果为false,那么表达式2的结果,就是整个三元表达式的结果。

注意点:

​ 三元表达式的最终结果必须要被使用。

  • 要么赋值给一个变量
  • 要么直接输出
案例1:
//定义两个变量记录两只老虎的体重
int weight1 = 180;
int weight2 = 200;

//三元表达式来计算判断
//三元表达式的结果,必须要被使用。
//要么把结果赋值给一个变量,要么把结果直接输出。
String result = weight1 == weight2 ? "相同" : "不相同";
System.out.println(result);

//直接把三元表达式放到输出语句当中。
//此时打印的就是三元表达式最终的结果了。
System.out.println(weight1 == weight2 ? "相同" : "不相同");
案例2:
//定义三个变量去记录三个和尚的身高
int height1 = 150;
int height2 = 210;
int height3 = 165;

//先比较第一个和第二个的身高。得到较大值。
int temp = height1 > height2 ? height1 : height2;
//拿着较大值,再跟第三个比较。得到最大值。
int max = temp > height3 ? temp : height3;
//输出最大值
System.out.println(max);

11,键盘录入

目的:

​ 就是接收用户在键盘上录入的数据。

步骤:

​ 1,导包

​ 告诉虚拟机Scanner这个类在哪。

​ 2,创建对象

​ 打个招呼,我现在准备开始用这个类了。

​ 3,接收数据

​ 真正干活的代码

//1,导包 --- 告诉虚拟机,Scanner这个类在哪?
import java.util.Scanner;

public class ScannerDemo{
	public static void main(String [] args){
		//2,创建对象 --- 打个招呼,要开始用这个类了。
		Scanner sc = new Scanner(System.in);
		//3.接收数据 --- 才是真正使用这个类的功能
		System.out.println("请录入一个数");
		int number = sc.nextInt();
		
		//输出刚刚键盘录入的变量
		System.out.println("刚刚录入的数据为:"+number);
	}
}
package com.yu.Scanner;

import java.util.Scanner;

public class Demo01 {

    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int i = sc.nextInt();
        System.out.println(s+i);
        }
}

如果第一次键盘录入10,第二次键盘录入10。那么通过+进行计算,结果输出1010注意此时s为字符串

注意点:

​ sc.nextInt();只能接收整数,不能接收小数或者字符串。

如果输入了小数或者字符串,程序就会报错。

12,idea

具体使用请参见资料中的pdf文件。

快捷键:

​ psvm + 回车 快速生成main方法

​ sout 快速生成输出语句

其他的快捷键,我们在后面写代码的时候,会挨个带着大家去学习的。

ntln(“请录入一个数”);
int number = sc.nextInt();

	//输出刚刚键盘录入的变量
	System.out.println("刚刚录入的数据为:"+number);
}

}


```java
package com.yu.Scanner;

import java.util.Scanner;

public class Demo01 {

    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int i = sc.nextInt();
        System.out.println(s+i);
        }
}

如果第一次键盘录入10,第二次键盘录入10。那么通过+进行计算,结果输出1010注意此时s为字符串

注意点:

​ sc.nextInt();只能接收整数,不能接收小数或者字符串。

如果输入了小数或者字符串,程序就会报错。

12,idea

具体使用请参见资料中的pdf文件。

快捷键:

​ psvm + 回车 快速生成main方法

​ sout 快速生成输出语句

其他的快捷键,我们在后面写代码的时候,会挨个带着大家去学习的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值