java学习笔记001

  • 关于java中的数据类型

    • 数据类型的作用是什么
      • 程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用的空间大小是不同的
      • 数据类型的作用是指导JVM在运行程序的时候给该数据分配多大的内存空间
    • java中的数据类型包括两种
      • 基本数据类型
        • 基本数据类型包括四大类八小种

          • 第一类:整数型
            • byte,short,int,long
          • 第二类:浮点型
            • float.double
          • 第三类:布尔型
            • boolean
          • 第四类:字符型
            • char
          • 八种基本数据类型各自占用的空间大小是多少
          基本数据类型占用空间大小[单位:字节]
          byte1
          short2
          int4
          long8
          float4
          double8
          boolean1
          char2
      • 引用数据类型
        • 接口
        • 数组
    • 字符串“abc"不属于基本数据类型,属于引用数据类型,字符属于基本数据类型
      • 字符串使用双引号"abcd"
      • 字符使用单引号’a’
    • 计算机在任何情况下都只能识别二进制
      • 什么是二进制
        • 数据的一种表示形式,十进制表示满十进一原则,二进制表示满二进一原则
    • 字节(byte)
      • 1 Byte=8 bit [1个字节=8个比特位]
      • 1个比特位就是一个1 或者一个0
    • 整数型当中的byte类型,占用一个字节,所以byte类型数据占用8个比特位,那么byte类型的取值范围是?
      • 关于java中的数据类型,数字都是有正负之分的,所以在数字的二进制当中有一个二进制位被称为“符号位”,并且这个“符号位”在所有二进制位的最左边。
        0表示正数,1表示负数
      • byte类型最大值:01111111
      • byte类型的取值范围:[-128-127]
      • byte类型可以表示256个不同的数字
    • 计算机如何表示现实世界当中的文字?
      • 八种基本数据类型当中,byte,short,int,long,float,double,boolean这7种数据类型计算机在表示的时候比较容易。因为底层都是数字,
        十进制的数字和二进制之间存在一种固定的转换规则
      • 但是八种基本数据类型当中char类型表示的是现实世界中的文字,文字和计算机二进制之间默认情况下是不存在任何转换关系的
      • 为了让计算机表示现实世界中的文字,需要人负责提前制定好“文字”和“二进制”之间的对照关系,这种对照转换关系叫做:“字符编码”
    • 八种基本数据类型的取值范围
    基类型取值范围
    byte[-128-127]
    short[-3268-3267]
    int
    long
    float
    double
    boolean[true,flase]
    char[0-65535]
    • note:
      • short 和char所表示的种类总数是一样的,只不过char可以表示更大的正整数,因为 char没有负数
    • 注意
      • 变量还是遵守这个语法:必须先声明,再赋值,才能访问
      • 成员变量没有手动赋值,系统会默认赋值,局部变量不会
      • 八种基本数据类型的默认值
    类型默认值
    byte0
    short0
    int0
    long0
    float0.0
    double0.0
    booleanflase [在c语言中,true是1,false是0]
    char\u0000
         - 八种基本数据类型的默认值是一切向0看齐。
    
    • 数据类型——char
      • 一个中文占用2个字节,char类型正好是2个字节,所以java中的char类型可以存储一个中文字符
      • 转义字符 \
        • 转义字符出现在特殊字符之前,会将特殊字符转换为普通字符

        • \n 换行符

        • \t 制表符

          • note:
            制表符和空格不同,他们的ASCII不一样,体现在键盘上两个不同的按键
        • 以下并不是一个字符串,而是“一个”字符,这是一个“换行符”,属于char类型的数据.反斜杠在java中具有转义功能

          • char i=’\n’;
        • System.out.println 输出之后换行

        • System.out.print 表示输出,但是不换行

        • 在java中两个反斜杠代表一个普通的反斜杠字符

        • JDK中自带的native2ascii.exe命令,可以将文字转换成unicode编码形式

          • 如何使用这个命令
            • 在命令行输入native2ascii,回车,然后输入文字之后回车即可得到unicode编码
    • 数据类型–整型
      • java语言当中的“整数型字面值”被默认当成int类型来处理。要让这个“整数型字面值”被当作long类型来处理的话,需要在“整数型字面值”后面添加l/L
        建议使用大写的L.
      • java语言当中的整数型字面值有三种表示方式
        • 第一种方式:十进制[是一种缺省默认的方式]
        • 第二种方式:八进制[在编写八进制整数型字面值的时候需要以0开始]
        • 第三种方式:十六进制[在编写十六进制整数型字面值的时候需要以0x开始]
      • long a= 123;
        • NOTE: 123整数型字面值被当作int类型,占用四个字节

        • a变量在声明的时候是long类型,占用8个字节

        • int 类型的字面值123赋值给long类型的变量 a,存在类型转换

          • int 类型转换成long类型
          • int 类型是小容量
          • long 类型是大容量
          • 小容量可以自动转换成大容量,称为自动类型转换机制
          • 大容量不能直接赋值给小容量
          • 大容量转换成小容量,需要进行强制类型转换
            • 强制类型转换需要加“强制类型转换符”
            • 加上强制类型转换符之后编译通过了,但是运行阶段可能损失精度,所以强制类型转换,需要谨慎使用。因为损失精度之后可能损失很严重。
        • example

          • long y=2149483647
            System.out.println(y)

          // 编译报错:过大的整数:2149483648
          // 2149483648被当作int类型4个字节处理,但是这个字面值超出int类型范围

          • long y=2149483648;

          // 解决错误
          // y 是long类型变量,以下程序不存在类型转换

          • long y=2149483648L;
        • 分析以下程序是否可以编译通过?

          • CODE:
            • byte b =50;
            • byte c =127;
              // 编译报错,128这个int类型的字面值已经超出了byte类型的取值范围,不能直接赋值给byte类型的变量
            • byte z =128;
              // 纠正错误:需要使用强制类型转换符,但是一定会损失精度
              • byte z = (byte) 128;
          • 根据目前所学,以下程序是无法编译通过
            • 理由:50是int类型的字面值,b 是byte类型的变量,显然是大容量int转换成小容量byte
            • 大容量转换成小容量是需要添加强制类型转换符的,以下程序没有添加强转符号,所以编译应该报错
            • 但是,在实际编译过程中,以上代码编译通过了,这说明,在java中,当一个整数型字面值没有超出byte类型取值范围的话,该字面值可以直接赋值给byte类型的变量
          • 当一个整数字面值没有超出byte、short、char取值范围,这个字面值可以直接赋值给byte、short、char类型的变量
            • 目的:是为了方便程序员的编程
    • 数据类型–精度损失
      • 强转造成
    • 数据类型–浮点型
      • float 单精度 4字节
      • double 双精度 8字节 精度较高
        • sun公司为程序员准备了精确度更高的类型,只不过这种的数据类型属于一种引用的数据类型,不属于基本数据类型。他是java.math.BigDecimal
        • 在java语言当中,所有的浮点型字面值,默认被当作成Double类型来处理,要想该字面值当成float类型来处理,需要在字面值后面添加F/f
          • eg:
            double b=3.0
        • java程序中sun提供了一套庞大的类库,java程序员是基于这套基础的类库来进行开发的。所以需要知道java的SE类库的字节码在哪里?要知道java
          的SE类库的源码在哪里?
          • SE类库字节码文件路径
          • SE类库源码文件路径
          • eg:
            • String.java和String.class
              • 我们的(String[] args)中的String使用的就是String.class字节码文件
        • note:
          • double 和 float在计算机内部二进制存储的时候存储的都是近似值
          • 有些数字是无限循环的,计算机的资源是有限的,用有限的资源存储无限的数据只能存储近似值
      • 数据类型–布尔型 boolean
        • 在java语言当中boolean类型只有两个值:true和false。没有其他值。不像c语言当中,0和1可以表示假和真。
        • 在底层存储的时候boolean类型占用1个字节,因为实际存储的时候false底层是0,true底层是1
        • eg:
          • 编译报错:不兼容的类型
            • boolean a=1;
          • 正确的:
            boolean a=true;
            if (a){
            System.out.println(‘success’)}
            else {
            System.out.println(‘failded’)}
      • 数据类型—基本数据类型之间的互相转换
        • 转换规则
          • 八种基本数据类型当中除布尔类型之外剩下的7种之间都可以互相转换
          • 小容量向大容量转换,称为自动类型转换;容量从小到大排序:
            • byte<short<int<long<float<double
            •     char<
              
            • note:
              • 任何浮点类型不管占用多少个字节,都比整数型容量大
              • char和short可表示的种类数量相同,但是char可以取更大的正整数
              • char a=100; // 是正确的,不是错误的
          • 大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
          • 当整数字面值没有超出byte、short、char的取值范围,可以直接赋值给byte,short,char类型的变量
          • byte,short,char混合运算的时候,各自先转换成int类型再做运算
          • 多种数据类型混合运算,先转换成容量最大的那种类型再做运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__BC__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值