java运算符

1.1算术运算符加减乘除
1.运算符:对常量或者变量进行操作/运算的符号 
2.表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
3.数学运算符: 
	(1)+: 加法运算
    (2)-: 减法运算
    (3)*: 乘法运算 
    (4)/: 除法运算 
    	被除数 ÷ 除数 =(/: 获取除法运算中的商) ... 余数(%: 获取除法运算中的余数)
    	
1.2算术运算符%
%运算符(取余数运算符)
%的作用:
	1.判断数字的奇偶性
		偶数(可以被2整除): 数字%2 的 结果是0
		奇数(不可以被2整除): 数字%2 的 结果不是0 ==> 结果是1
    2.判断一个数字能否被另外一个数字整除
    	结果为0: 说明可以被整除
    	结果不为0: 说明不可以被整除
            
%(取余数)运算符
        被除数 ÷ 除数 =(/:获取的是除法运算中的商) ... 余数(%:获取的是除法运算中的余数)
        总结:
            /%都是做数学中的除法运算,只不过/获取到的是除法运算中的商,%获取到的是除法运算中的余数

        作用:
            1.判断数字的奇偶性:
                偶数: 可以被2整除,余数是0
                奇数: 不可以被2整除,余数是1

            2.判断一个数字能否被另一个数字整除
                结果是0: 可以被整除
                结果不是0: 不可以被整除

        思考:
            int变量num中存储四位数字1234,利用/%计算个位十位百位千位?
            个位: 4
            十位: 3
            百位: 2
            千位: 1
                
 int变量num中存储四位数字1234,利用/%计算个位十位百位千位?
        个位: 4
        十位: 3
        百位: 2
        千位: 1
    总结:
        个位: num%10
        十位: num/10%10
        百位: num/100%10
        千位: num/1000%10 如果确定是四位数字,可以省略%10
1.3赋值运算符
+= 	加后赋值   a+=b,将a+b的值给a 	a = a + b
-= 	减后赋值   a-=b,将a-b的值给a 	a = a - b
*= 	乘后赋值   a*=b,将a×b的值给a 	a = a * b
/= 	除后赋值   a/=b,将a÷b的商给a    a = a / b
%= 	取余后赋值  a%=b,将a÷b的余数给a  a = a % b
注意:
	1.=: 表示的是赋值运算
	2.==: 表示的是判断是否相同
1.4自增自减运算符
 自增(++)自减(--)运算符
        1.作用: 就是让变量的值增加1(++)或者减少1(--)
        2.使用格式:
            (1)可以写在变量的前面: ++a,--a
            (2)可以写在变量的后面: a++,a--
        3.使用注意事项:
            (1)单独使用:++或者--自己独占一行,没有其它多余的操作
                此时:++和后++效果一样,都是让变量的值增加1--和后--效果一样,都是让变量的值减少1

            (2)混合使用: ++或者-- 和其它操作(赋值/打印)一起进行运算
                将产生重大区别:++:先进行变量的加1,在进行表达式的运算
                    后++:先进行表达式的运算后进行变量的加1-- 和 后--  操作和前++++ 操作一样
1.5关系运算符
1.作用:
	用来比较两个数据之间的大小关系,结果是boolean类型的数据	
        
2.特点:	
	关系表达式不管写的多么复杂,或者多么简单,最终结果要么是true(成立),要么是false(不成立)
    
3.分类:	
	== 	a==b,	判断a和b的值是否相等,成立为true,不成立为false
    > 	a>b,	判断a是否大于b,成立为true,不成立为false
	>= 	a>=b,	判断a是否大于或者等于b,成立为true,不成立为false
	< 	a<b,	判断a是否小于b,成立为true,不成立为false
	<= 	a<=b,	判断a是否小于或者等于b,成立为true,不成立为false= 	a!=b,	判断a和b的值是否不相等,成立为true,不成立为false
	
4.注意:
	1.=: 表示的是赋值运算
	2.==: 表示的是判断是否相同
1.6逻辑运算符
1.作用: 
	用来连接多个布尔表达式的,结果也是布尔类型

2.分类:
	(1)逻辑与【有false,则false:
		表示并且的意思,同时成立的意思
		多个条件都为true,结果才为true
		多个条件只要有一个为false,结果就是false
    (2)逻辑或【有true,则true:
		表示或者的意思
		多个条件只要有一个为true,结果就是true
		多个条件都是false,结果就是false
	(3)逻辑异或:		
		相同为false,不同为true
	(4)逻辑非:
		!true: 就是false
		!false: 就是true
1.7逻辑运算符的短路效果
逻辑运算符的短路效果
        1.基本使用
            (1)短路逻辑与(&&): 左侧为false,右侧不进行计算
            (2)短路逻辑或(||): 左侧为true,右侧不进行计算

        2.使用区别):
            (1)&&&: 最终的结果是相同的,但是&&具有短路的效果,效率高
            (2)|||: 最终的结果是相同的,但是||具有短路的效果,效率高

        3.注意:
            以后实际学习/开发过程中,需要连接多个条件时,强烈建议使用&& 或者 ||
1.8三元运算符格式
1.格式:
	数据类型 变量名称 = 布尔表达式1 ? 表达式2 : 表达式3;
	注意:
    	?号前面的式子的结果必须是布尔类型
    	
2.执行流程:1)计算布尔表达式1的结果,看是true,还是false2)如果布尔表达式1的结果是true,取表达式2的结果赋值给左侧的变量
	(3)如果布尔表达式1的结果是false,取表达式3的结果赋值给左侧的变量
1.9键盘录入
	(1)导包: import java.util.Scanner
    (2)创建键盘录入Scanner类的对象sc
    Scanner sc = new Scanner(System.in)
    (3)获取到键盘录入的int数字,赋值给变量b
        int b = sc.nextInt();
1.10数据类型转换
  • 自动类型转换
1.自动类型转换概念:	
	取值范围小的数据/变量,可以直接赋值给取值范围大的变量(小萝卜可以直接放入大坑中)
Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
举例:
	int + int:	类型一直,可以直接计算
	int + long: 类型不一致,不可以直接计算
		解决方案一:
			int + long --> long + long : 转换后类型一直,可以直接计算
			把int类型转换成long类型,从小到大,叫做自动类型转换(自动完成)
2.特点: 
	(1)是自动完成的,不需要代码的特殊处理
	(2)byte/short/char类型,至少会自动类型转换为int类型
	(3)转换规则: byteshortchar-->int-->long-->float-->double
	总结:
		整个表达式中的所有类型,都会自动转换成表达式中最大的类型,结果也是最大的类型
举例:00000000
	有一个byte类型(1个字节)的数字5:			00000101	
	byte类型自动类型转换成short类型(2个字节):	
    	在左侧补充一个字节的0,因为补充的是0,对于原有数据大小没有影响
        00000000 00000101
            
	byte类型自动类型转换成int类型(4个字节): 
		在左侧补充三个字节的0,因为补充的是0,对于原有数据大小没有影响
		00000000 00000000 00000000 00000101
        
	byte类型自动类型转换成long类型(8个字节): 	
		在左侧补充七个字节的0,因为补充的是0,对于原有数据大小没有影响
		00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000101            
  • 强制类型转换
1.强制类型转换概念:
	取值范围大的数据或者变量,不能直接赋值给取值范围小的变量,
	必须进行强制类型转换(大萝卜不能直接放入小坑当中)   
     
    long类型的847: 
		00000000 00000000 00000000 00000000 00000000 00000000 00000011 01001111
    强制类型转换为byte类型:
		01001111: 79
        
     long num = 847L;
	 byte b = (byte)num;//把num强制类型转换成byte类型,砍掉左侧的7个字节的内容变成了79损失了精度
	
2.格式:	
	转后类型 变量名称 = (转后类型)转前数字/变量;
	
3.问题:
	可能损失精度 
    
举例:00000000
	有一个long类型(8个字节)的数字5:	
		00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000101	     
   
	long类型强制类型转换成int类型(4个字节):
		砍掉左侧的四个字节的内容,目前砍掉都是0,对数据大小没有影响,只要砍掉的有1,就会影响数据大小
		00000000 00000000 00000000 00000101
        
	long类型强制类型转换成short类型(2个字节):	
		砍掉左侧的六个字节的内容,目前砍掉都是0,对数据大小没有影响,只要砍掉的有1,就会影响数据大小
		00000000 00000101
	        
    long类型强制类型转换成byte类型(1个字节):	
		砍掉左侧的七个字节的内容,目前砍掉都是0,对数据大小没有影响,只要砍掉的有1,就会影响数据大小
		00000101
	
总结:    
 	根据需求,砍掉左侧的若干字节的内容,如果砍掉都是0,对数据大小没有影响,
	只要砍掉的有1,就会影响数据大小 
//强制类型转换练习一
public class Demo10 {
    public static void main(String[] args){
        //short类型变量,内存中占2个字节
        short s = 1;
		

		/*
            s是short类型(占2个字节),1是int类型(占4个字节),类型不一致,
            会发生自动类型转换,把short类型的s,转换成int类型(左侧补充2个字节的0)
            short类型s的1: 00000000 00000001
            int类型的s的1: 00000000 00000000 00000000 00000001

            short + int --> int + int --> int
                结果为int类型(占4个字节),不能直接赋值给左侧short类型(占2个字节)的变量

            但是把int类型的结果数据强制类型转换为short类型(砍掉左侧的2个字节的内容)
            int类型的结果2: 00000000 00000000 00000000 00000010
            强转成short类型的结果2: 00000000 00000010
         */
        s = (short)(s + 1);
        System.out.println(s);
    }
}
1.11ASCLL码表
总结: byte/short/char类型,至少会自动类型转换为int类型
	存储字符时:
		'a' --> 97 --> 1100001	26个小写字母的ASCII码值是连续的,相差1
        'A' --> 65 --> 1000001	26个大写字母的ASCII码值是连续的,相差1
        '0' --> 48 --> 110000	10个数字字符的ASCII码值是连续的,相差1        
        小写字母的ASCII码值比对应的大写字母多32        
    使用字符时
    	1100001 --> 97 --> 'a'
        1000001 --> 65 --> 'A'
        110000  --> 48 --> '0'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值