首页 > 编程语言 >JavaSE--数据类型

JavaSE--数据类型

时间:2023-08-05 23:12:22浏览次数:30  
标签:short 字节 -- 数据类型 char int JavaSE byte

一、数据类型

1、数据类型

  数据类型用来声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。
int i = 10;
double d = 1.23;
// i变量和d变量类型不同,空间大小不同。
 

2、两种数据类型

  • 基本数据类型
    基本数据类型又可以划分为4大类8小种:     第一类:整数型       byte,short,int,long (没有小数的)     第二类:浮点型        float,double (带有小数的)     第三类:布尔型       boolean:只有两个值true和false,true表示真,false表示假     第四类:字符型       char:java中规定字符型字面量必须使用单引号括起来。属于文字     8小种:     byte,short,int,long     float,double     boolean     char
  • 引用数据类型
    字符串型String属于引用数据类型,String字符串不属于基本数据类型范畴     java中除了基本数据类型之外,剩下的都是引用数据类型  

3、基本数据类型之间的区别

  整数型:byte short int long有什么区别?
  浮点型:float和double有什么区别?
  区别:占用的空间大小不同。   1)占用字节数量     byte    1字节     short    2字节     int     4字节     long    8字节     float    4字节     double   8字节     boolean  1字节     char    2字节

4、各个类型的取值范围

  (1个字节)byte: [-128 ~ 127]
  (2个字节)short:[-32768 ~ 32767] 可以表示65536个不同的数字
  (4个字节)int: [-2147483648 ~ 2147483647]
  (2个字节)char: [0~65535]  可以表示65536个不同的数字   对于short和char来说:short和char实际上容量相同,因为char表示的是文字,文件没有正负之分,所以char可以表示更大的数字。

5、各个数据类型默认值

  byte       0

  short      0

  int      0

  long     0L

  float       0.0f

  double   0.0

  booleam     flase

  char     \u0000

  引用数据类型  null

 

二、基本数据类型详解

  • 字符型 char
  • 整数型 byte short int long
  • 浮点型 float double
  • 布尔型 boolean

  1)char类型

/*
    char类型
    char占用两个字节,取值范围0-65535,采用unicode编码
    char类型字面量用单引号
*/
public class CharTest01{
    public static void main(String[] args){
        // char可以存储一个汉字,汉字占用两个字节
        char c1 = 'z';
        // 编译报错
        char c2 = "a";
        // 错误 只能有一个字符
        char c3 = 'ab';
    }
}

  转义字符 “\”

// 转义字符 “\”
public class CharTest01{
    public static void main(String[] args){
        char c1 = '\t';// \t 表示制表符tab
        char c2 = '\n';// \n 表示换行符
        System.out.print('\\'); // 输出字符 \斜杠
        System.out.print('\''); // 输出字符 '单引号
        System.out.print('\"'); // 输出字符 "双引号
        System.out.print("'zhe'"); 
        System.out.print('\u4e2d'); // \u表示后面是一个unicode编码  输出 中
    }
}

  2)整数类型

/*
    整数类型
    byte 1字节、short 2字节、int 4字节、long 8字节
    最常用的是int类型,int类型  最大值是2147483647,超过这个值可以使用long
*/
/*
    整数型字面量有4中表示形式
        十进制:常用  二进制   八进制   十六进制
*/
public class CharTest02{
    public static void main(String[] args){
        // 十进制
        int a = 10;
        // 八进制
        int b = 010; // 0开头
        System.out.println(b); // 8
        // 十六进制
        int c = 0x10; // 0x开头
        // 二进制
        int d = 0b10; // 0b开头
    }
}
在java中,任何情况下,整数型的字面量默认被当作int类型处理,如果需要将该整数型字面量当long类型处理,需要在后面加L/l

  类型转换

自动类型转换和强制类型转换

/*
    自动类型转换
    小容量可以自动转换成大容量
*/
public class CharTest03{
    public static void main(String[] args){
        int a = 100;// a占4字节
        long b = 200;// b占8字节,但是默认整数型字面量被当作int类型处理,小的自动转换成大的
        // 这个不存在类型转换,因为L为long类型,long类型赋值给long
        long c = 300L;
        // 整数型字面量默认为int类型,但是d超过int类型范围,所以还没有赋值的时候就出错了
        // 整数太大
        long d = 2147483648;
        long d = 2147483648L;
    }
}
 
/*
    强制类型转换
    大容量不能直接赋值给小容量,需要强制类型转换符进行强制转换
    注意:强制类型转换之后可能会损失精度
*/
public class CharTest04{
    public static void main(String[] args){
        long x = 100L;
        // 大容量不能直接赋值给小容量
        // int y = x;
        int y = (int)x;//(int)强制类型转换符 
    }
}
注意:语法规则 当一个整数没有超过byte,short,char的取值范围的时候,这个整数可以直接赋值给byte,short,char类型的变量
public class CharTest05{
    public static void main(String[] args){
        // 错误
        // byte b = 300;
        byte b = (byte)300;// 会损失精度
        
        // 按照道理说应该编译报错,但是没有报错
        byte c = 1;
        // 注意:语法规则:当整数型字面量没有超过byte的取值范围,那么可以直接赋值给byte
        short d = 32767;
        // 注意:语法规则:当整数型字面量没有超过short的取值范围,那么可以直接赋值给short
        
        // 没有报错
        char c1 = 97; // a
        // 当一个整数赋值给char类型变量,会自动转换成char字符型
        // char类型取值范围:0-65535
        char c2 = 65536; // 超过范围 会报错
        char c2 = (char)65536; // 强制转换 // 解决问题
    }
}

注意:多种数据类型做混合运算的时候,最终的结果类型是“最大容量”对应的类型

  但是 char + short + byte除外,因为他们三个在混合运算的时候,会各自先转换成int再做运算

// byte char short混合运算
public class IntTest01{
    public static void main(String[] args){
        char c1 = 'a';
        byte b = 1;
        System.out.println(c1 + b); // 98
        // 编译器不知道运算结果,只知道c1 + b类型是int,所以需要强制类型转换
        short s = (short)(c1 + b);
        
        long a = 10L;
        char c = 'a';
        short s = 100;
        int i = 30;
        System.out.println(a + c + s + i);// 237
         int x = a + c + s + i;// 报错,从long转换到int可能会损失
        
        // java中规定int类型与int类型运算结果还是int类型,
        int temp = 10 / 3; // 3  最终取整
        
        // java中计算结果不一定是准确的
        int temp2 = 1 / 2; // 0
    }
}

  3)浮点型 

浮点型包括:float 4字节,double 8字节

float是单精度,double是双精度

注意:在银行或者财务方面,double也远远不够,java提供了精度更高的类型,java.math.BigDecimal(属于引用数据类型)

float和double存储数据的死后都是存储的近似值,因为有无线循环小数

注意:任意一个浮点型都比整数空间大,因为浮点型里面还有次幂啥的

规定:任何一个浮点数数据默认被当作double来处理,如果想要把浮点数字面量当作folat类型来处理,那么在后面加上F/f

public class FloatTest01{
    public static void main(String[] args){
        float f = 3.14;// 错误:从double转换到float可能会有损失
        float f = 3.14F;
        float f = (float)3.14;
        
        int i = 10.0 / 5; // 错误:结果是double 大容量无法赋值给小容量
        int i = (int)10.0 / 5;
        int i = (int)(10.0 / 5);
    }
}

  4)布尔型

/*
    boolean类型只有两个只 true  false
    通常在逻辑判断中使用,放在条件位置
*/
public class BooleanTest01{
    public static void main(String[] args){
        boolean sex = true;
        if(sex){
            System.out.println("man");
        }else{
            System.out.println("woman");
        }
        
        System.out.println(10 > 20);// false
    }
}

  总结:基本数据类型转换规则

  • 八种基本数据类型中,除boolean 类型不能转换,剩下七种类型之间都可以进行转换
  • 如果整数型字面量没有超出byte , short , char的取值范围,可以直按将其赋值给byte, short, char类型的变量
  • 小容量向大容量转换称为白动类型转换,容量从小到大的撸序为: byto < short (char) <int < long < float < double, 其中
  • shor和 char都占用两个字节,但是char可以表示更大的正整数
  • 大容量转换成小容量,称为强制类型转换,编写时必须添加"强制类型转换符",但运行时可能出现精度损失
  • byte, short, char类型混合运算时,先各白转换成int 类型再做运算
  • 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算

 

标签:short,字节,--,数据类型,char,int,JavaSE,byte
From: https://www.cnblogs.com/hyy-0/p/17605957.html

相关文章

  • 7.30-8.5
      7.30今日任务:pta练习(完成)学习英语(未完成)明日任务:补齐英语进度 7.31今日任务:记单词(完成)练习口语(完成)复习高数(完成) 8.1今日任务:学习Java课程(完成)阅读Java讲义(完成)学习英语单词(完成) 8.2今日任务:朋友聚会看电影(完成)记单词(完成)听力练习(完成) 8.3......
  • 在下方任务栏处可以看到软件启动但是在笔记本屏幕上看不到软件界面
    问题:在公司笔记本连接了显示器,到家后打开代码编辑器,在任务栏显示打开了,但总是看不到界面。解决方法:用鼠标在任务栏选中打不开的软件,ALT+空格,弹出的窗口选择:最大化,即可看到正常的软件界面。 ......
  • Unity 编辑器选择器工具类Selection 常用函数和用法
    Unity编辑器选择器工具类Selection常用函数和用法点击封面跳转下载页面简介在Unity中,Selection类是一个非常有用的工具类,它提供了许多函数和属性,用于操作和管理编辑器中的选择对象。本文将介绍Selection类的常用函数和用法,并提供相应的示例代码。静态属性1.activeConte......
  • MSZBday1
    Try-catch-return 面试题 1.如果try 或者 catch中有return finally还会执行吗?答:会先执行finallyreturn而 try,catch 中的return被覆盖掉注意只是return被覆盖其他的顺序不变 图一try中数据 图二 ......
  • session与token
    1.base64Base64是一种用于将二进制数据编码为文本的编码方案,它使用ASCII字符串格式来表示二进制数据。Base64常用于在只能处理ASCII字符的系统上传输数据,如电子邮件系统、web服务器以及编码媒体文件。在Base64中,每个字符代表6个数据位,因此可以将3个字节的二进制数据编码为4......
  • 构造函数,移动语义move与右值引用
    构造函数C++的构造函数包含一般构造函数,拷贝构造函数与移动构造函数。拷贝构造函数其中包含浅拷贝和深拷贝(此处以深拷贝为例),主要是通过将已存在的对象的所有成员拷贝给新对象,来实现对新对象的初始化。这样就会存在两个一样的对象,相当于内存中存在两份。拷贝构造函数的参数......
  • Windows 在VMware Workstation 17上安装macOS Sonoma 虚拟机
    前言macOS在一些方面做得比Windows更好。但是,macOS只能安装在苹果电脑上,虽然黑苹果能满足部分人的要求,但依然有大部分机型无法安装黑苹果。而在虚拟机上,大部分用户都可以用上macOS,虽然流畅度等一般都没有白苹果、黑苹果好,但用来体验和日常使用是问题不大的。如果用来开发或编程之类......
  • 【刷题笔记】6. ZigZag Conversion
    题目Thestring "PAYPALISHIRING" iswritteninazigzagpatternonagivennumberofrowslikethis:(youmaywanttodisplaythispatterninafixedfontforbetterlegibility)PAHNAPLSIIGYIRAndthenreadlinebyline: &q......
  • 感悟生活 《第一篇》
    1 即使面对逆境,也不忘面带微笑  生活不可能一帆风顺,但微笑能治愈生活的苦。你若笑过,就会发现:笑,是世界上最好的灵丹妙药。  听过一句话:人生除了生死,其他都是擦伤。被误解时,笑一笑,没什么大不了;受委屈时,笑一笑,转身流泪亦是无妨;无奈时,笑一笑,所有的抱怨随风而逝。2出门前照照......
  • 最完美WIN11_Pro_22H2.22631.2129软件选装纯净版VIP51.3
    【系统简介】=============================================================1.本次更新母盘来自UUP_WIN11_Pro_22H2.22631.2129。进一步精简优化调整。2.只为呈现最好的作品,手工精简优化部分较多。3.OS版本号为22631.2129。个别要求高的就下MSDN吧,里面啥功能都有。4.集成《DrvCeo......