Week4

一、两大数据类型、基本类型中每种类型的取值范围和默认值

两大数据类型:基本数据类型和引用数据类型。

        基本数据类型:byte,short,int,long,float,double,char,boolean

        引用数据类型:类(对象),接口(实例),数组。

基本类型取值范围和默认值:

byte:
- 最小值:-128(-2^7);
- 最大值:127(2^7-1);
- 默认值:0;

short:
- 最小值:-32768(-2^15);
- 最大值:32767 (2^15-1);
- 默认值:0;

int:
- 最小值:-2147483647(-2^31);
- 最大值:2147483647(2^31-1);
- 默认值:0;

long:
- 最小值:-9223372036854775808 (-2^63);
- 最大值:9223372036854775807 (2^63-1);
- 默认值:0;

float:
- 最小值:1.4E-45;
- 最大值:3.4028235E38;
- 默认值:0.0f;

double:
- 最小值:4.9E-324;
- 最大值:1.7976931348623157E308;
- 默认值:0.0d;

char:
- 最小值:\u0000(0);
- 最大值:\uffff (65535);
- 默认值:0;

boolean:
- 取值:true 和 false;
- 默认值:false;

        

二、整型溢出的情况

        上溢出:存储数值超过了整形数值2^31-1,导致数据向上溢出。

        下溢出:整数数值小于了-2^31,导致数值向下溢出。

请看下面一段代码:

int a = Integer.MAX_VALUE/2+1; //1073741824      
int b = Integer.MAX_VALUE/2+1;      
int overflow = a + b;      
System.out.println(overflow); //-2147483648

可以看到 a+b 溢出了int型的最大值,解决这个问题可以将a,b和overflow都转为long型。

long overflow= (long)a+ (long)b;

三、基本类型的包装类及其高频区间数据缓存范围

        基础数据类型的包装类:Integer,Long,Double,Float,Boolean,Byte,Short,Character。

        Double和Float没有缓存,其他类型都有高频缓存区间。其高频缓存区间的缓存范围是:
        Boolean:使用静态final,就会返回静态值
        Byte:-128~127
        Short:-128~127
        Character:0~127
        Long:-128~127
        Integer:-128~127

四、自动装箱和自动拆箱

        自动装箱 当我们把一个基本类型的值,赋值给引用变量时候,系统可以自动将它“包装”为相应的包装类的实例程序需要对象时, 如果给的只是一个基本类型的值, 系统会将它自动装箱为包装类的实例达到的效果。

        自动拆箱: 当我们需要一个基本类型的值时, 但实际上传入的包装类的对象。 系统会自动把对象“剥”开,得到它的值。 

public class Main {
    public static void main(String[] args) {
         
        Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;
         
        System.out.println(i1==i2);
        System.out.println(i3==i4);
    }
}
 
//true
//false

i1和i2的数值为100,因此会直接从cache中取已经存在的对象,所以i1和i2指向的是同一个对象.而i3和i4指向的是不同的对象。

五、int与Integer的区别,以及互相转换

        int 是基本类型,直接存数值;而integer是对象,用一个引用指向这个对象。

        int属于基本数据类型,而integer属于包装数据类型。

1.int是基本的数据类型
2.Integer是int的封装类
3.int和Integer都可以表示某一个数值
4.int和Integer不能够互用,因为他们两种不同的数据类型

int到Integer:

int a=3;
Integer A=new Integer(a);

或者:
Integer A=Integer.valueOf(a);

Integer到int:

Integer A=new Integer(5);

int a=A.intValue();

六、逻辑运算符&和&&的区别、逻辑运算符&与位运算符&的区别

        &&和&都表示and运算,当两边的数都为true的时候才为true的时候才为真,否则为false、不同的是,&是运算符的左右两边的算式子进行运算,再进行计算,而&&符是从左边运算,第一个式子如果错误,那么就不在对右边算式进行运算。用&&的目的是加快运算速度,但也要防止用法上的问题。
        逻辑运算符只能对boolean类型进行比较,但是位运算符还可以对数字进行比较。逻辑运算符存在短路的现象,即前边的表达式可以得到最终结果是,后面的表达式就不被执行。而位运算符不存在短路现象,位运算是把两边的数据全部变成二进制补码的形式,然后进行计算的。

七、跳出多重循环

        break会跳出(终止)当前循环。

        continue是跳出当前循环,开始下一循环。

        return是结束方法

        如果需要从多层循环跳出,则需要使用标签,定义一个标签(label),然后再在需要跳出的地方,用break (label)就行了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值