Java中完整的数据类型及数据类型转换

Java语言是数据类型分为:基本数据类型、引用类型
基本数据类型可以概括为:四类八种

  • 整数类型:byte、short、int和long
  • 浮点类型:float和double
  • 字符类型:char
  • 布尔类型:boolean
1、基本数据类型
1.1整型类型

整型类型默认是int类型,如果想表示long类型,则在值的后面加上L

byte a = 15;
short b = 16;
int c = 17;
long d1 = 16L;
long d2 = 16l; //小写
整型 类型宽度取值范围
byte1个字节(8位)-128~127
short2个字节(16位)-215 ~ 215-1
int4个字节(32位)-231 ~ 231-1
long4个字节(64位)-263 ~ 263-1
1.2 浮点类型

它分为浮点数(float)双精度浮点数(double) 两种,双精度浮点数所使用的内存空间比浮点数多,可表示的数值范围与精确度也比较大。java中默认的浮点类型是double类型。

浮点类型宽度
float4个字节(32位)
double8个字节(64位)

代码演示:

float a = 389.89f;
float a1 = 250.78F;
double b1 = 346.45d;
double b2 = 454.34D;
double b = 35.56; //默认
1.1-1.2 数字类型

整数类型和浮点类型都表示数字类型。
1)进制数字表示:

  • 二进制数:以 0b 或0B为前缀,注意0是阿拉伯数字,不要误认为是英文字母o。
  • 八进制数:以0为前缀,注意0是阿拉伯数字。
  • 十六进制数:以 0x 或0X为前缀,注意0是阿拉伯数字。

代码演示:

int decimalInt = 18;
int binaryInt1 = 0b11110;
int binaryInt2 = 0B11100;
int octalInt = 034;
int hexadecimalInt1 = 0x1C;

2)指数表示
采用十进制表示指数,需要使用大写或小写的e表示幂,e2表示102

double myMoney = 3.14e2;
double interestRate = 1.56e-2;

其中3.14e2表示的是3.36×102 ,1.56e-2表示的是1.56×10-2

1.3 字符类型

字符类型表示单个字符,Java中char声明字符类型,Java中的字符常量必须用单引号括起来的单个字符。
Java字符采用双字节Unicode编码,占两个字节(16位),因而可用十六进制(无符号的)编码形式表示,它们的表现形式是\un,其中n为16位十六进制数。
双字节Unicode的存储范围在\u0000\uFFFF,所以char类型取值范围02 16 -
1。

char x = 'A';
转义字符

在Java中,为了表示一些特殊字符,前面要加上反斜杠(\),这称为字符转义。
在这里插入图片描述
代码演示:

public class Demo5 {
	public static void main(String[] args) {
		String a1 = "hello\tWorld"; //水平制表符
		String a2 = "hello\nWorld"; //换行
		String a3 = "hello\rWorld"; //回车
		String a4 = "hello\"World\"."; //双引号
		String a5 = "hello\\World."; //反斜杠
		
		System.out.println("a1 is "+a1);
		System.out.println("a2 is "+a2);
		System.out.println("a3 is "+a3);
		System.out.println("a4 is "+a4);
		System.out.println("a5 is "+a5);
		}
	}	
结果为:
a1 is hello	World
a2 is hello
World
a3 is hello
World
a4 is hello"World".
a5 is hello\World.
1.4 布尔类型

关键字为boolean,只有两个值:true 和 false
提示:
在C语言中布尔类型是数值类型,它有两个取值:1和0。而在Java中的布尔类型取值不能用1和0替代,也不属于数值类型,不能与int等数值类型之间进行数学计算或类型转化。

boolean isMan = true;
boolean isWoman = false;
2 数值类型相互转换
2.1 自动类型转换

小范围数据类型可以自动转换为大范围数据类型。
在这里插入图片描述
注意:
char类型比较特殊,char自动转换为int、long、float和double,但byte和short不能自动转换为char,而且char也不能自动转换为byte或short。
自动类型转换规则:

操作数1类型操作数2类型转换后的类型
byte、short、charintint
byte、short、char、intlonglong
byte、short、char、int、longfloatfloat
byte、short、char、int、long、floatdoubledouble
2.2 强制类型转换

强制类型转换是在变量或常量之前加上“(目标类型)”实现。

int i = 10;
//把int变量i强制转换为byte
byte b = (byte) i;
//int型变量
int i = 10;
float c1 = i / 3;        ①
System.out.println(c1);     ②
//把int变量i强制转换为float
float c2 = (float)i / 3;        ③
System.out.println(c2);     ④

结果为:
3.0
3.3333333
2、引用类型

引用数据类型变量中保持的是指向对象的内存地址
在这里插入图片描述

String str1 = "Hello"; 
String str2 = str1;
str2 = "World";

相关面试题:

  • short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

       对于 short s1 = 1; s1 = s1 + 1;由于 s1+1运算时会自动提升表达式的类型,所以结果是 int型,
       再赋值给 short 类型 s1时,编译器将报告需要强制转换类型的错误。对于 short s1 = 1; s1 += 1;
       由于 +=是 java 语言规定的运算符,java 编译器会对它进行特殊处理,因此可以正确编译。
    
  • char 型变量中能不能存贮一个中文汉字?为什么?

      char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 
      型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 unicode 编码字符集
      中,那么,这个 char 型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字
      节,所以,char 类型的变量也是占用两个字节。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小曾同学.com

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

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

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

打赏作者

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

抵扣说明:

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

余额充值