day02--数据类型、运算符

一、数字存储

  1. 数据在计算机底层都是使用二进制存储的。

  2. 快速计算一个数据的二进制形式的方法是除二取余法

  3. 数据在计算机底层存储的基本单元是字节(byte,B)

  4. 数据在计算机底层存储的最小单位是比特(bit,b)

  5. 1B=8bit

二、文字存储

  1. 字符存的是ASCII编码表中对应的数字的二进制形式。

  2. 字符‘0’对应的数字是48

  3. 字符‘A’对应的数字是65

  4. 字符‘a’对应的数字是97

  5. 图片、声音、视频等等 内容在计算机中都是想办法转为二进制存储的。

三、类型转换

数据类型数据范围占用字节(B)
byte 整型-128~1271
short 整型-32768~327672
int (默认) 整型-2147483648~2147483647 (10位数,大概21亿多)4
long 整型-9223372036854775808~ 9223372036854775807(19位数)8
float 浮点型1.401298 E -45 到 3.4028235 E +384
double(默认) 浮点型4.9000000 E -324 到1.797693 E +3088
char 字符型0~655352
boolean 布尔型true、false1

3.1 自动类型转换

类型范围小的变量,可以直接赋值类型范围大的变量。

byte a = 12;
int  b = a;
System.out.println(b);//12

3.2 表达式的自动类型转换

在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。

  • 表达式的最终结果类型由表达式中的最高类型决定

  • 在表达式中,byte、short、char直接转换成int类型参与运算的。

3.3 强制类型转换

强行将类型范围大的变量、数据赋值给类型范围小的变量。

*数据类型 变量2 = (数据类型)变量1、数据

注意

  • 强制类型转换可能会造成数据的丢失(溢出)。

  • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。

 int a = 20;
 byte b = (byte)a;//强制类型转换
 System.out.println(b);//20
​
 //强转会造成数据的丢失(溢出)
 int  i = 1500;
 byte j = (byte)i;
 System.out.println(j);//-36
​
 //3.小数转整数
 double a3 = 3.14;
 int b3 = (int)a3;
 System.out.println(b3);
​
  //4.
  byte a2 = 5;
  byte b2 = 6;
  byte c2 = (byte)(a2+b2);
  System.out.println(c2);

四、(重点)运算符

4.1 基本的算术运算符

符号作用说明
+可做连接符,能加就加,不能加就连在一起
-
*
/在Java中两个整数相除结果还是整数
%取余获取的是两个数据做除法的余数
public class Demo1 {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        //能加就加,不能加就连接在一起
        System.out.println("hello"+a+b);//hello103
        System.out.println(a-b);//7
        System.out.println(a*b);//30
        System.out.println(a/b);//3
        System.out.println(a%b);//1
    }
}
练习:数值拆分
 /*
        * 求x的个十百千......位数值
        * 个位:a%10
        * 十位:a/10%10
        * 百位:a/100%10
        * 千位:a/1000%10
        * ......
        * */
public class Demo2 {
    public static void main(String[] args) {
​
        int b = 9098;
        int qian = b/1000%10;
        int bai = b/100%10;
        int shi = b/10%10;
        int ge  = b%10;
        System.out.println(b+"的个位是" + ge);
        System.out.println(b+"的十位是" + shi);
        System.out.println(b+"的百位是" + bai);
        System.out.println(b+"的百位是" + qian);
    }
}
​

4.2 自增自减运算符

符号作用(只能操作变量,不能操作字面量)
自增:++放到某个变量的前面或后面,对变量自身的值加1
自减:--放到某个变量的前面或后面,对变量自身的值减1

注意事项:

  1. 单独使用:++、--放到某个变量的前后面效果一样

  2. 不单独使用(表达式、打印):自增、自减在变量前后效果不同

变量前:++a:先对变量+1,在使用

例如:int a =10;int b = ++a;//a=11,b=11

变量后:a++:先使用变量,再对变量+1

例如:int a =10;int b = a++;//a=11,b=10

/*
    自增(++)自减(--)
*/
public class Demo3 {
    public static void main(String[] args) {
        //单独使用
        int a1 = 10;
        a1++;
        ++a1;
        System.out.println(a1);//12
​
        //变量前:先操作,在使用
        int a2 = 10;
        int b2 = ++a2;//a2 = a2 + 1;int b2 = a2;
        System.out.println(b2);//11
​
        //变量后:先使用,在操作
        int a3 = 10;
        int b3 = a3++;//int b3 = a3; a3 = a3 + 1
        System.out.println(b3);//10
​
        int a4 = 10;
        System.out.println(a4++);//10 sout(a4); a4 = a4 + 1;
    }
}
​

4.3 赋值运算符

1.基本赋值运算符: =符号含义: 把右边的值赋值给左边的变量 2.扩展赋值运算符: += -= *= /= %=符号含义:将右边的数据和左边的变量相加、相减、相乘、相除、取余数后,将结果重新赋值给左边的变量。

符号用法作用底层代码形式(内部对运算结果进行强制转换)
+=a+=b加后赋值a=(a的类型)(a+b)
-=a-=b减后赋值a=(a的类型)(a-b)
*=a*=b乘后赋值a=(a的类型)(a*b)
/=a/=b除后赋值a=(a的类型)(a/b)
%=a%=b取余后赋值a=(a的类型)(a%b)
//扩展赋值运算符,内部对运算结果进行强制转换
 byte by = 4;
 //by = by + 1;报错,因为byte会直接转换为int型再参与运算
 by+=1;//等价于by = (byte)(by+1),添加了强转,所以不会报错

扩展赋值运算符的作用是什么?有什么特点

  • +=可以实现数据的累加,把别人的数据加给自己。

  • 扩展的赋值运算符自带强制类型转换。

4.4 关系运算符

符号例子作用结果
>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

注意:在Java中判断是否相等一定是“==”,千万不要把“==”误写成“=”

4.5 逻辑运算符

符号叫法例子运算逻辑
&逻辑与2 > 1 & 3 > 2多个条件必须都是true, 结果才是true; 有一个是false,结果就是false
|逻辑或2 > 1 | 3 < 5多个条件中只要有一个是true, 结果就是true;
!逻辑非! (2 > 1)就是取反:你真我假,你假我真。!true == false、!false == true

4.6 短路运算符(效率更高)

符号叫法例子运算逻辑
&&短路与2 > 10 && 3>2判断结果与“&”一样,过程不同:左边为 false**,右边则不执行。**
||短路或2 > 1 | | 3 < 5判断结果与“|”一样,过程不同:左边为 true**, 右边则不执行。**
int a = 3;
int b = 0;
int b1 = 0;
System.out.println(a > 4 & b++ > 0);//左边false,右边继续不执行
System.out.println(b);//1
System.out.println(a > 4 && b1++ > 0);//左边false,右边短路不执行
System.out.println(b1);//0

4.7 三元运算符

三元运算符格式:

关系表达式 ?值1 : 值2

三元运算的执行流程:

首先计算关系表达式的值,如果关系表达式的值为true,则返回值1;

如果关系表达式的值为false, 则返回值2;

 // 需求3:找3个整数中的较大值。
        int i = 10;
        int j = 45;
        int k = 34;
​
        // 找出2个整数中的较大值。
        int temp = i > j ? i : j;
        // 找出temp与k中的较大值。
        int max2 = temp > k ? temp : k;
        System.out.println(max2);

4.8 运算符的优先级

&&的优先级大于||

//这里&&先算 相当于 true || false 结果为true
System.out.println(10 > 3 || 10 > 3 && 10 < 3); // true

五、获取用户键盘输入的数据

【第1步】:在class类上导包:一般不需要我们自己做,idea工具会自动帮助我们 导包的。
	import java.util.Scanner;
	
【第2步】:得到一个用于键盘扫描器对象(照抄代码就行,固定格式)
	//Scanner是键盘扫描器对象(你就把它理解成一个东西),这个东西有录入的功能
	//sc是给这个东西取的名字
	Scanner sc = new Scanner(System.in);

【第3步】:开始调用sc的功能,来接收用户键盘输入的数据。
        //next() : 获取键盘输入的字符串
        //nextInt() : 获取键盘输入的整数
	int age = sc.nextInt();
	System.out.println("我的年龄是:"+age);

	
	String name = sc.next();
	System.out.println("我的姓名是:"+name);

关于昨天的JDK组成补充:JVM+核心类库=JREJRE+开发者工具=JDK

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值