Java学习笔记3 基本数据类型

Java基础语法

基本数据类型

  1. java中的数据类型分两大类:
    • 基本的数据类型:8种
      • 数值型:

        • 整形:byte、short、int、long
        • 浮点型:double、float
      • 字符型:char

      • 布尔型:boolean

    • 引用的数据类型:类、接口、注解、枚举、数组
  2. 数据都是存放在内存中,Java内存大体可以分为堆、栈、常量池、方法区
方法区
运行时数据区存取速度快用来存储类型信息
运行时动态分配内存数据可以共享常量池
自动垃圾回收数据大小和生命周期必须确定,不够灵活用来存储某类型的常量信息
存取速度较慢
  1. 每种数据类型在内存中占有不同的长度;
    • 计算机存储设备的最小信息单元叫“位(bit)”,又称之为“比特位”;
    • 连续的8个位成为1个“字节(byte)”;
    • 操作系统分配内存最少1个字节,即8 个位,而不是1个位;
    • 长度越长,所表示的范围就越大;
    • 每种数据类型在内存中占有不同的长度;
    • 计算机存储设备的最小信息单元叫“位(bit)”,又称之为“比特位”;
    • 连续的8个位成为1个“字节(byte)”;
    • 操作系统分配内存最少1个字节,即8 个位,而不是1个位;
    • 长度越长,所表示的范围就越大;
类型长度(位)长度(字节)表示范围
byte8位1字节-128~127
short16位2字节 − 2 15 -2^{15} 215~ 2 15 − 1 2^{15}-1 2151
int32位4字节 − 2 31 -2^{31} 231~ 2 31 − 1 2^{31}-1 2311
long64位8字节 − 2 63 -2^{63} 263~ 2 63 − 1 2^{63}-1 2631
float32位4字节-3.403E38~3.403E38(3.40292347*10的38次方)
double64位8字节-1.798E308~1.798E308(1.798*10的308次方)
char16位2字节0~ 2 6 − 1 2^6-1 261,表示一个字符,如(‘a’,‘A’,‘0’,‘中’)
boolean8位1字节逻辑常量只有两个值true与false
  1. 基本的数据类型的默认值
类型默认值
byte0
short0
int0
long0
float0.0
double0.0
char‘’ 空字符(\u0000)
booleanfalse
  1. 代码检验基本数据类型的默认值
public class Test1 {
    /**
     * 查看Java基本数据类型的默认值
     * @param args
     */

    //全局变量
    //int num;
    //使用静态的全局变量
    static int num;
    static byte num2;
    static short num3;
    static long num4;
    static float num5;
    static double num6;
    static char num7;
    static boolean flag;
    public static void main(String[] args) {//static修饰的方法,是静态方法,静态方法只能访问静态的成员变量
        /*
        // num为局部变量(在方法中声明的变量) 使用局部变量必须要进行初始化
        int num;
        System.out.println("int类型的默认值"+num);*/
        System.out.println("int类型的默认值: "+num);
        System.out.println("byte类型的默认值: "+num2);
        System.out.println("short类型的默认值: "+num3);
        System.out.println("long类型的默认值: "+num4);
        System.out.println("float类型的默认值: "+num5);
        System.out.println("double类型的默认值: "+num6);
        System.out.println("char类型的默认值: "+num7);
        System.out.println("boolean类型的默认值: "+flag);
    }
}
  1. 不同的基本数据类型之间可以进行转换;
    • 从表示范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换;
    • 从表示范围大的类型转换为表示范围小的类型,需要强制转换,称为显式转换;
    • 数值类型和boolean类型之间就不能转换;强制也不可以;
public class Test2 {
    public static void main(String[] args) {
        //自动类型转换
        int num=10;
        double num2=num;
        System.out.println("num="+num);
        System.out.println("num2="+num2);

        //强制类型转换
        double num3=4.5;
        int num4=(int)num3;
        System.out.println("num3="+num3);
        System.out.println("num4="+num4);

    }
}
  1. • 用“=”可以为任何一种基本数据类型的变量赋值;
    • 赋值时主要不要超过表示范围,否则将出现编译错误;
    • char类型使用’'引用单个字符赋值;也可以使用非负整数(ASCII码)进行赋值;
    了解:ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。
  2. 如果是整数,默认是int类型
    如果是小数,默认的double类型
    57 是int , 4.5 是double
    • 小数默认是double类型;
    • 使用f/F后缀显式表示float类型;使用d/D后缀显式使用double类型;
  3. 可以使用==、!=、>、<、>=、<=对基本数据类型的数值进行比较运算;
  4. 练习:比较1.0d和1.0f是否相等,0.3d和0.3f是否相等。
public class Test3 {
    public static void main(String[] args) {

        double d1=1.0d;
        float f1=1.0f;
        System.out.println("d1==f1吗? "+(d1==f1));  //ture
        System.out.println("d1!=f1吗? "+(d1!=f1));  //false
        double d2=0.3d;
        float f2=0.3f;
        System.out.println("d2==f2吗? "+(d2==f2));  //false
        System.out.println("d2!=f2吗? "+(d2!=f2));  //ture

        /*
        原因:在比较时,会把十进制数转换为二进制
        0.3在转二进制后为0.01001001001.....的无限循环小数
        而double和float类型的精度不同,所以0.3d不等于0.3f
        而1.0不存在这个问题,所以1.0d=1.0f

		1.0f  1.0d 的二进制表示,不管是32位还是64位,都是相同的。
        0.3f  0.3d的二进制表示,32位和64位不同,所以是false
        0.3f转换为二进制   每次*2取整作为二进制位,小数部分继续*2
        0.3x2=0.6 取0
        0.6x2=1.2 取1
        0.2x2=0.4 取0
        0.4x2=0.8 取0
        0.8x2=1.6 取1
        0.6x2=1.2 取1
        开始循环
        所以结果0.01001 1001 1001……
        */
    }
}
  1. 基本的数据类型和引用的数据类型(绝大多数情况)
基本数据类型引用数据类型
存放位置栈内存地址(引用)存在栈内存,内容存在堆内存
赋值方式用=直接赋值用new创建对象赋值

String和Integer都是引用的数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值