java基础复习第二天——基本数据类型,引用数据类型,数据类型转换,运算符

目录

1.基本数据类型(4类八种)

2.引用数据类型

3.基本类型和引用类型的区别

4.数据类型转换

5.运算符



----------------------------------------------------------------------我是分割线-----------------------------------------------------------------------------------

Java中一共有两大类数据类型:

1.基本数据类型(4类八种)

整型:

                      所占内存       取值范围

字节型 byte   1个字节        -128-127

短整型 short  2个字节        +-30000左右

整型     int      4个字节        +-21亿

长整型 long     8个字节        不得了

 

浮点型:

单精度浮点型 float    4个字节    详细取值范围见下图

双精度浮点型 double 8个字节

 

字符型:

字符型 char      2字节

 

布尔型:

布尔型 boolean  1字节    true/false

 

  tip:1.8E20  代表 1.8*10的20次方

2.引用数据类型

  String (字符串)、类、接口等

  提到String,便想起了 == 和 equals的区别,有时间专门整一下子,其实这些度娘那有一大把,我这就是用最简单的语言表述一下

3.基本类型和引用类型的区别

引用类型的存储原理:

基本数据类型 都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面

引用类型 继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

4.数据类型转换

    public static void main(String[] args) {
        
        //自动类型转换,小范围--->大范围

        long c =5;//int 5自动转换成long类型
        System.out.println(c); //5

        //强制转换类型 大范围--->小范围 ,精度可能损失
        long c1=10L;
        int b =(int)c1;

        //double和float的经度范围不同
        double d =3.12345678999999999;
        float f =(float)d;
        System.out.println(f); //3.1234567
        int a2 =(int)1000000000000000L;
        System.out.println(a2);//-1530494976 精度损失

        char b2 ='中';
        int b3=b2;
        System.out.println(b2);//中
        System.out.println(b3);//20013
      
    }

5.运算符

1.算术运算符

+: 加

a.求2个数的和

i.如果是两个类型一样的数据,直接求和

ii.如果两个类型不一样的数据.先转成一样,在求和

a.如果是byte,char,short 那么无条件先转成int

b.如果是多个类型相加,那么最后的结果是最宽的类型

c.所有小数相加,得到都是近似值

b.连接一个字符串和另外一个任意数据,得到连接后的新字符串

 

-: 减

求两个数差

*: 乘

求两个数积

/: 除

求两个数的商

如果两个数都是整数,那么结果肯定是整数

 

%: 取模/求余数

10 % 3 结果是 1

 

++:自增

自增运算符只能用于变量

格式:

++变量名;

变量名++;

作用: 都是让该变量的值增加1

 

++在前和在后的区别:

a.如果 变量名++ 或者 ++变量名 是单独一个式子 那么没有任何区别

b. 如果 变量名++ 或者 ++变量名 不是单独一个式子

口诀: ++在前,先加后用

++在后,先用后加

 

 

--:自减

自减运算符只能用于变量

格式:

--变量名;

变量名--;

作用:让变量的值减少1

 

--在前和在后的区别:
           a.如果 变量名-- 或者 --变量名 是单独一个式子 那么没有任何区别

b. 如果 变量名-- 或者 --变量名 不是单独一个式子

口诀:--在前,先减后用

--在后,先用后减

 

扩展:编译器的优化

a.对byte short 赋值时,编译器会优化,只要数值没有超过范围 那么没有问题

byte b = 10;

short s = 11;

b.如果是常量相加,编译器阶段直接计算

byte b = 1 + 2; // 编译器会直接计算出 3

 

c.如果是变量相加,编译器不会优化

byte b1 = 1;
           byte b2 = 2;
           int b3 = b1 + b2; //变量相加不优化,所以结果是int类型
           int b4 = b1 + 2; //变量相加不优化,所以结果是int类型
           int b5 = 1 + b2; //变量相加不优化,所以结果是int类型

 

2.赋值运算符

=: 最简单的赋值运算符

int a = 10;

一个变量可以无数次赋值,但是该变量最终只能保存一个值,最后一次赋的值

int a = 10;

+=:

a+=10; ====>  a = a+10

 

注意: += 具有强转功能

比如 byte b = 10;

b+=1;

// b = (byte)(b + 1);

tip: short、char、byte进行运算是自动转化成了int类型

3.比较运算符

比较运算符 最后结果是 boolean类的值

>

<

>=

<=

==

!=

 

4.逻辑运算符

使用逻辑运算符 只能计算两个boolean类型数据,其结果还是boolean

&&: 短路与  口诀:全真为真(一假则假)

||: 短路或  口诀:全假为假(一真则真)

! : 非     单目运算符, 口诀: 取反

^ : 异或     口诀:相同为假(不同为真)

 

短路与 和 短路或 中 "短路"的含义

false && 后面编译器是不看的

true || 后面编译器是不看的

 

5.三目/元运算符

符号:  ?  :

格式:

boolean类型值?值1:值2

结果:   如果boolean类型的值是true ,那么结果就是值1

如果boolean类型的值是false,那么结果就是值2

           这个三元运算很简单,但是等到用的时候总是想不起来,还是一直再用if..else 蓝廋!

       

猜你喜欢

转载自blog.csdn.net/weixin_41229776/article/details/83959657