Javase基础3:进制、类型转换、运算符

目录

1. 笔记

1.1进制

1.2 类型转换

1.3 运算符

2. 练习

2.1 算术运算符练习

2.2 赋值运算符练习


1. 笔记

1.1进制

二进制(计算机的世界)
   逢二进一
   0 1 10 11 100 101 ...
八进制
   逢八进一
   0 1 2 3 4 5 6 7 10 ...
十进制(现实生活)
   逢十进一
   0 1 2 3 4 5 6 7 8 9 10 ...
十六进制
   逢十六进一
   0 1 2 3 4 5 6 7 8 9 A B C D E F 10 ...

十进制-->二进制
   十进制数据对2依次做除法运算,要的是余数的倒序,就是该十进制数据的二进制
   一个字节是8位(8个0和1组成)
   byte b=10;  // 10通过8个0和1去表示
   short s=10;  //10 通过16个0和1去表示
   int i=10;   //10通过32个0和1去表示

   10   -->     1010
   5    -->     101
   26   -->     11010
   128  -->     0000 0000 1000 0000    8位存不下,byte   -128 ~ 128
   -128 -->     1000 0000    特殊的值

   最高位为符号位:0正数   1负数
      10    -->   0000 1010
      -10   -->   1000 1010
   最高位本身就是1, 本身负数还有,源码、反码、补码 (不是现阶段所了解)

   a. 十进制转为二进制,算法需要掌握
   b. -128 特殊的值  是 1000 0000

二进制 --> 十进制
   10110      -->    22
   110        -->    6
   1   1  0   1    1  0    1    -->    109

   a. 每位系数乘以2^(n-1)相加

   128和-128的二进制都是 1000 0000 我有点晕晕的
      128    -->    0000 0000 1000 0000    128绝对不是8位,8位存不下
      -128   -->    1000 0000              -128,8位是可以存下的
源码反码补码可以研究!

1.2 类型转换

6. 基本数据类型转换(boolean不参与转化并且和String无关)
   byte -> short -> int ->long -> float -> double
         char  -> int
   自动转化(小->大)
      byte b=10;
      int i=b;//自动转化
   强制转化(大->小)  不建议使用,有风险(数据丢失)
      int i=10;
      byte b=i;//有语法错误
      正确的语法:较小的数据类型 变量名=(较小的数据类型)大数据类型值;
         byte b=(byte)i;

   String和基本数据类型之间的转化,后面讲(String、包装类)

1.3 运算符

1.1 算数运算符
   + - * / % ++ --
   ① +
      加法的加  数学运算   byte short int long float double char
      连接符    +两端只要有String出现,那么就是连接符,结果的话就是String
   ② -
      作为负数的标识
      减法的减  数学运算   byte short int long float double char
   ③ *
      乘法的乘  数学运算   byte short int long float double char
   ④ /
      整型数据之间的/
         取商数
      有浮点型数据参与/
         获得的就是准确的结果(如果除不尽,会自动保留小数)
   ⑤ %
      取模(取余数)
   ⑥ ++
      自身加1
   ⑦ --
      自身减1
    语法:
           变量名++   或   ++变量名
           变量名--   或   --变量名
     ++放在前面和放在后面,是有先后顺序的,但是如果这行代码只有++,对于结果来说没有影响
2. 赋值运算符(了解)
   = += -= *= /= %=
   2.1 = ★
      等号右侧的值赋给左侧的内容(变量)
   2.2 +=  -= *= /= %=
      在原变量值的基础上做相应的操作,将结果在赋值给该变量
3. 关系(比较运算符)运算符
      比较运算符的结果是一个布尔值(只有两个结果true false)
   3.1 > >= < <=
      可以进行比较的数据类型有   byte short int long float double char
   3.2 ==   判断两个值是否相等
      任意类型都可以采用==做对比,但是前后类型要兼容
   3.3 !=   判断两个值是否不相等
      任意类型都可以采用!=做对比,但是前后类型要兼容
4. 逻辑运算符
   4.1 并且  两个条件都成立总体才成立,否则总体就不成立
      ① &&  双与(短路与)
        会造成短路--> 当第一个条件不成立的时候,总体就已经不成立了,不在判断第二个条件
      ② &   单与
         第一条件是成立的,第二个也需要判断(需求需要执行)
   4.2 或者  两个条件都不成立,总体就不成立,否则总体就是成立
      ① || 双或(短路或)  --> 当第一个条件成立的时候,总体就已经成立了
      ② |  单或
   4.3 非
      ① !   取反
   4.4 异或(了解)
      ^  相同为false,不同为true
         true ^ true   相同
         false ^ false  相同
         true ^ false    不同
         false ^ true    不同
5. 三元运算符
   语法: 条件?值1:值2;
   原理:条件成立返回值1,条件不成立返回值2!
6. 位运算符(了解)  和二进制有关    后面会有详细讲解(偏难)
   因为我们在学习集合的时候,源码内会有相关的位运算符,能看懂
   左移:<<
      运算规则:左移几位就相当于乘以2的几次方
   右移:>>
      运算规则:右移几位就相当于除以2的几次方

2. 练习

2.1 算术运算符练习

练习一:获取一个四位数的个位、十位、百位、千位

public class Test01 {
	public static void main (String [] args) {
		//1.定义一个四位数,例如1234
		int num = 1234;
		//2.通过运算操作求出个位,十位,百位,千位
		int ge = num % 10; // 1234 / 10  =  123......4
		int shi = num / 10 % 10; //1234 / 10 = 123%10 
		int bai = num / 100 % 10;
		int qian = num / 1000 % 10;
		
		System.out.println(num + "这个四位数个位上的数字是:" + ge);
		System.out.println(num + "这个四位数十位上的数字是:" + shi);
		System.out.println(num + "这个四位数百位上的数字是:" + bai);
		System.out.println(num + "这个四位数千位上的数字是:" + qian);
	}
}

2.2 赋值运算符练习

练习一:写出每题的输出结果

public class LogicExer1{
	public static void main(String[] args){
		int x = 1;
		int y = 1;

		//x==2 ,x++  false  x = 2 左边为false
		//右边继续
		//++y  y==2  y=2  y==2成立  右边为true
		//false & true 结果false
		if(x++==2 & ++y==2){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=2,y=2
	}
}
public class LogicExer2{
	public static void main(String[] args){
		int x = 1,y = 1;

		//x==2,x++  左边条件为false,x=2
		//因为短路与,右边不算
		//false && ? 结果是false
		if(x++==2 && ++y==2){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=2,y=1
	}
}
public class LogicExer3{
	public static void main(String[] args){
		int x = 1,y = 1;

		//x==1,x++  左边为true,x=2
		//因为是逻辑与,右边继续  
		//++y, y==1  y=2 右边为false
		//条件true | false,最终为true
		if(x++==1 | ++y==1){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=7,y=2
	}
}	
public class LogicExer4{
	public static void main(String[] args){
		int x = 1,y = 1;

		//x==1,x++  左边为true,x=2
		//因为是短路或,左边为true,右边就不看了
		//整个条件为true
		if(x++==1 || ++y==1){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=7,y=1

	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值