首页 > 编程语言 >重学Java-第五章 Java数据类型

重学Java-第五章 Java数据类型

时间:2023-02-15 11:55:13浏览次数:38  
标签:重学 Java int double 数据类型 类型 byte

5.1 概述

​ Java语言的数据类型可以分为基本数据类型(primitive data type)和引用型数据类型(reference data type)

5.2 基本数据类型

5.2.1 整数类型

​ Java语言提供了4种整数类型,分别为byte型(字节型)、short型(短整型)、int型(整型)和long型(长整型)。这些整数类型都是有符号数,可以为正值或负值。每种类型的整数在内存中占的位数不同,因此能够表示的数的范围也就不同。
注意:不要把整数类型的宽度理解成实际机器的存储空间,一个byte型的整数可能使用32位存储。

数据类型 占字节数 所占位数 取值范围
byte 1 8 -128~127 (-2^7 ~ 2^7-1)
short 2 16 -32768~32767 (-2^15 ~ 2^15-1)
int 4 32 -2147483648~2147483647 (-2^31 ~ 2^31-1)
long 8 64 -2^63 ~ 2^36-1
	Java的整型字面量有4种表达方式:
  1. 十进制数,如0、32、-542。

  2. 二进制数,是以0b或0B开头的数,如0B00101010表示十进制数42。

  3. 八进制数,是以0开头的数,如0124表示十进制数84,-012表示十进制数-10。

  4. 十六进制数,是以0x或0X开头的整数,如0x124表示十进制数292。

    注意:整型字面值具有int类型,在内存中占32位,若要表示long型字面值,可以在后面加上l或L,若23423431L,在内存中占64位。

​ Java中这几个整型变量的定义

byte num1 = 12;
short num2 = 100;
int num3 = 99999;
long num4 = 45252352352L;    //超出int型范围的必须使用L表示

//注意下面代码的输出
byte a = 0b00101010;    //二进制数
int b = 0124;          //八进制数
long c = 0x1F;        //十六进制数

System.out.println("a = " + a);    //42
System.out.println("b = " + b);    //84
System.out.println("c = " + c);    //31

5.2.2 浮点类型

​ 浮点类型的数就是通常说的小数。Java中有两种浮点类型的数据:float型和double型。这两种类型的数据在内存中所占的位数不同,float型占32位(4字节),double型占64位(8字节)。因此,通常将float型称为单精度浮点型,将double型称为双精度浮点型。
浮点型字面值有两种表示方式:

  1. 十进制形式,由数字和小数点组成,且必须有小数点,如3.14159、.256、256.、256.0等。
  2. 科学计数法形式,如256e3、256e-3,分别表示256*103和256*10-3。e之前必须有数字,e后面的指数必须为整数。

​ Java中两个浮点型变量的定义:

double d = .000000103;
float f = 3.1415926F;    //float型的值必须加f或F

System.out.println("d = " + d);    //1.03E-7
System.out.println("f = " + f);    //3.1415925

5.2.3 字符类型

​ 字符是程序中可以出现的任何单个符号。字符在计算机内部是由一组0和1的序列表示的。将字符转化为其二进制表示的过程称为编码。字符型字面值用单引号将字符括起来,大多数可见的字符都可以使用这种方式表示,如'a'、'我'等。对于不能用单引号直接括起来的符号,需要使用转义序列来表示。表示方法使用反斜杠(\)表示转义,如'\n'表示换行、'\t'表示水平制表符。

​ 常见的转义字符序列

转义字符 说明
\' 单引号字符
\" 双引号字符
\\ 反斜杠字符
\f 换页
\b 退格
\r 回车
\n 换行
\t 水平制表符

​ 字符型变量使用char定义,在内存中占16位,表示的数据是0~65535。字符型变量的定义如: char c = 'A';

5.2.4 布尔类型

​ 布尔型数据用来表示逻辑真或逻辑假。布尔型常量很简单,只有两个值:true和false(默认值),分别用来表示逻辑真和逻辑假。

​ 布尔型变量使用boolean关键字声明,例如:boolean t = true;

5.2.5 数据类型转换

	==boolean类型不可以转换为其他类型==
	==byte, short, char 三种类型间不会相互转换,他们三者在计算时,首先会转换为int类型==

	 数据类型按容量大小排序为:
      		byte, short, char < int < long <float < double

	 Java基本类型之间的转换有两种方式:
  1. 自动类型转换:从小类型到大类型,不需要强制转换符
int a = 5;
double b = a;

//此处将int类型变量a的值赋值给double类型变量b,因为是小类型转换成大类型,int类型变量a的值会自动转换成double类型并赋值给变量b
  1. 强制类型转换:从大类型到小类型,需要强制转换符实现强制转换(强转有可能产生精度丢失)
    强制转换符:(需要转换成的类型)变量
double a = 5.234;
int b = (int)a;

//此处将double类型变量a的值赋值给int类型变量b,因为是大类型转换成小类型,需要强制转换符先将double类型变量a的值转换成int类型再赋值给int类型变量b
	关于byte、short、char赋值与运算的强转规则:
  1. 不参与运算,整数直接量可以直接赋值给byte,short,char,不需要强转。
  2. byte,short,char型变量参与运算时,需要强转
byte b1 = 2;
byte b2 = 4;
byte b3 = (byte)(b1 + b2);

//b1与b2不参与运算,整数直接量可以直接赋值给byte;参与运算后,b1+b2和的值默认为int类型,需要强制转换成byte类型再赋值给byte类型变量b3

5.3 引用数据类型

​ 引用数据类型有类(class)、数组[]name、接口(interface)、枚举类型(enum)、注解类型(@interface)等。
注意:String类型是一个类,并不是基本数据类型。

标签:重学,Java,int,double,数据类型,类型,byte
From: https://www.cnblogs.com/XQ-Yang/p/17122315.html

相关文章

  • java 字符串如何直接转LocalDateTime?
    1.情景展示在实际开发过程中,可能会遇到将前端传的日期格式转成LocalDateTime插入到数据库的情况,如何将日期转成LocalDateTime呢?2.原因分析在Java8中,日期类不同于以......
  • java 文件File与byte[]数组相互转换的两种方式
     1.文件转byte[]方式一:文件输入流Filefile=newFile("C:\\Users\\Marydon\\Desktop\\个人信用报告.pdf");try{FileInputStreamfis=newFileInputStream(file);......
  • JavaScript 中 ?. 和 ?? 分别是什么?
    ?.和??是JavaScript中的两个新操作符,分别是可选链操作符(optionalchainingoperator)和空值合并操作符(nullishcoalescingoperator)。?.操作符?.可选链操作符用于......
  • java json对象转json字符串(带转义符)(json对象嵌套json字符串)
    1.情景展示如上图所示,这一个标准的json字符串,双引号需要使用反斜杠\进行转义,一般情况下,我们是用不到这种json字符串的,在java中,json字符串的通常表现形式是这种:......
  • java 实体类Bean与Map互相转化
     1.情景展示java对象与Map之间进行相互转换,如何实现? 2.分析通过org.apache.commons.beanutils.BeanUtils类来实现所需jar包<dependency><groupId>com......
  • Java 枚举类转json对象
     1.情景展示 如上图所示,我想要将枚举类转换成json对象,key对应属性名称,value对应属性值,效果如下:{"IvcVoucherCode":"200","IvcVoucherStatus":"票据模板下载成功"}......
  • java8 Lambda表达式遍历并移除元素,报错:ConcurrentModificationException的解决办法
     1.情景展示已知json对象MainExt需要把值为空数组的key移除掉,下面是执行代码执行结果报错:java.util.ConcurrentModificationException 2.原因分析大致过......
  • Javase基础-day9 ATM系统
    ATM系统功能实战系统准备、首页设计系统准备内容分析:①每个用户的账户信息都是一个对象,需要提供账户类。②需要准备一个容器,用于存储系统全部账户对象信息。③首页只......
  • Java Day 5
    二维数组声明:数组类型【】【】 数组名;如何创建二维数组对象及初始化动态初始化1.数组名=new元素的数据类型[行长度][每一行的列长度];  每一行的列数相同2.......
  • 浏览器前端 JavaScript Worker使用
    主Js文件内容://注意://使用前先判断浏览器是否支持//Worker内的代码不可以操作DOM//不能跨域加载Worker的js文件if(window.Worker!==undefined){//新建Worker......