【Java学习笔记】数据类型和变量

变量

  • (1)先声明(定义)后使用

  • (2)区分局部变量和全局变量

  • (3)同一个变量可以在不同的类中出现

  • (4)变量的三大要素

    • 1. 数据类型

    • 2. 变量名

    • 3. 值

  • (5)同一个变量,后续的赋值会覆盖之前的值


数据类型(字节大小必须记住!!!

  • 基本数据类型

    • 整数类型,存放整数(byte[1], short[2], int[4], long[8])

    • 浮点(小数)类型(float[4], double[8])

    • 字符型(char[2]),存放单个字符 ‘a’

    • 布尔型(boolean[1]),存放 true 或 false

  • 引用数据类型

    • 类(class)

    • 接口(interface)

    • 数组([])

一些说明

  • (1)除了字符型两个字节和多一个byte(1 个字节)数据类型以外,其余数据类型和字节大小和 C 语言一样

  • (2)布尔类型的命名稍有不同:boolean


数据类型存储和范围

类 型占用存储空间范 围默认值
byte1 个字节-128 ~ 127, 为唤存放的范围是这个 => 二进制制(二进制我们详解)0
short2 个字节-(2^15) ~ 2^15-1, -32768 ~ 327670
int4 个字节-2^31 ~ 2^31-1,-2147483648 ~ 21474836470
long8 个字节-2^63 ~ 2^63-1,-9223372036854775808 ~ 92233720368547758070L
char2 个字节‘\u0000’
float4 个字节-3.403E38 ~ 3.403E380.0f
double8 个字节-1.798E308 ~ 1.798E3080.0d
String(注意大写)是一个类null

为什么是这些范围?学了二进制见分晓

补充:1 个字节(byte)=8 个 bit


数据类型的应用和注意点

  • 整型(byte,short,int,long)

    • 1. Java 的整型常量(具体值)默认为 int 型

    • 2. 声明long型常量==须加 ‘l’ 或 ‘L’==表示这个数据是 long 类型

  • 浮点类型(float,double)

    • 面试考点:浮点数的构成

      • 符号位+指数位+尾数位

    • 1. Java默认小数是 double 类型,声明 float 变量需要在小数后面加上 f

      • 例如: float a= 1.1f,表示 1.1 是float类型

    • 2. 区别 double 和 float

      • 存在的问题同一个变量值使用不同的类型,输出其值,结果不同

      • (1)float 是单精度类型,会舍弃一些尾数,是一个近似值

      • (2)double 是一个双精度类型,精度更高

      • (3)推荐默认使用 double 类型

    • 3. 科学计数法的使用

      • 使用方法:数据e/E(一个正(负)整数:表示乘于10的几次方)

      • 举例

        • (1)float a = 1.1e1f

          • 输出:11.0

        • (2)float a= 1.1e-1f

          • 输出:0.11

    • 4. 小数计算结果精度问题(极其易错!!!)

      • 易错点说明:判断两个小数是否相等

      • 经典错误

        double a = 2.7
        double b = 8.1 / 3
        
      • 很显然a != b,为什么?

        • 实际上 b 的值并不是 2.7 ,由于精度问题,计算机会认为是 8.100000(等多个0) / 3

        • b:2.6999999999999997,那该如何判断两个小数相等呢?

      • 判断两个小数相等的方法

        • 思路:采用差值的绝对值 小于(<) 某个精度(可以认为规定)的方法

        • 代码示例

        public class main{
            public static void main{
        
            double num11 = 2.7;
            double num12 = 2.7;
            if(Math.abs(num11- num12) < 0.000001 ) {
            System.out.println("差值非常小,到我的规定精度,认为相等...");
            }
        
            }
        }
        
        
  • 字符类型(char,2 个字节,可以存放汉字

    • 字符存储原理

      • (1)字符的本质:在 Java 中,char 的本质是一个整数,在输出时,是unicode 码中对应的字符

      • (2)字符型存储到计算机中,需要将字符对应的码值(整数)找出来,

      • (3)'a’存储: ‘a’ ===> 码值 97 ===> 二进制 ===> 存储

      • (4)读取:二进制 => 97 ===> ‘a’ => 显示

    • 字符使用的注意点

      • (1)使用单引号引起来,不可以双引号,双引号表示一个字符串

      • (2)转义字符可以作为一个特殊的字符串常量

      • (3)可以直接给 char赋一个整数,然后输出时,就会按照对应的 unicode 字符输出

      • (4)char 类型可以进行运算的,相当于一个整数,因为他都对应有 unicode 码

      • 代码示例

        public class hello{
            public static void main(String[] args){
                char c5 = 'b' + 1;//98+1==> 99
                System.out.println((int)c5); //99
                System.out.println(c5); //99->对应的字符->编码表 ASCII(规定好的)=>c
            }
        }
        
  • 布尔类型(boolean)

    • 注意:在 Java 中不可以用 0 或者 1 表示真假,只能用 truefalse

一些说明

  • 如果不声明数据的类型,由于默认数据类型的存在会导致报错

  • 例如:一个小的数据类型当然可以赋值给大的数据类型(double a= 1.1f

  • 但是:一个大的数据类型不可以赋值给小的数据类型(float a= 1.1),这样会报错,因为默认是 double 类型

  • 注意小数计算存在的精度问题和计算结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jackson凌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值