Java笔记----2. 基本数据类型

一. java数据类型

基本类型:boolean类型,数值类型
引用类型:类、接口和数组类型,null类型
下图:

1. 整形
Java整数常量 默认就是int类型(占4个字节)
5,100,1000都是int类型
a:如果将一下较小的整数常量(在byte或short数值范围之内),赋给一个byte或short变量,系统会自动把这个整数常量当成byte或short类型来处理。
// 下面代码是正确的,系统会自动把56当成byte类型处理
byte a = 56;
b:如果将一个巨大的整数常量(超出了int类型),java 不会自动当成long类型来处理。
/*
下面代码是错的,系统不会把9999999999999当成long类型处理,
所以超出int的表数范围,从而引起错误
*/
// long bigValue = 9999999999999;
c:如果希望系统把一个整数常量当成long类型来处理,应当在整数常量 后加上-l或L后缀
// 下面代码是正确的,在巨大的整数值后使用L后缀,强制使用long类型
long bigValue2 = 9223372036854775807L;

2. 浮点
浮点数 默认为 double类型(占8个字节)
//直接把5.6赋值给float类型变量将出现错误
float a = 5.6
//必须强转
float a = (float)5.6

3. 二进制整数
二进制整数以0b或者0B开头, 默认占32位
当定义32位的二进制整数时, 最高位是符号位,1表示负数,负数在计算机里是以 补码的形式存在的。
图:

如果在二进制整数后添加L,那么它将占64位
// 定义二个8位的二进制数
int binVal1 = 0b11010100;
byte binVal2 = 0B01101001;
System.out.println(binVal1); // 输出212
System.out.println(binVal2); // 输出105

/*
 定义一个8位的二进制,该数值默认占32位,因此它是一个正数。
 只是强制类型转换成byte时产生了溢出,最终导致binVal4变成了-23
 */
byte binVal4 =  (byte)0b11101001;
System.out.println(binVal4); // 输出-23

// 定义一个32位的二进制数,最高位是符号位。
int binVal3 = 0B10000000000000000000000000000011;
System.out.println(binVal3); // 输出-2147483645

/*
  定义一个32位的二进制数,最高位是1。
  但由于数值后添加了L后缀,因此该整数的实际占64位,第32位的1不是符号位。
  因此binVal5的值等于2的31次方 + 2 + 1
 */
long binVal5 = 0B10000000000000000000000000000011L;
System.out.println(binVal5); // 输出2147483651

4. 下画线分隔
不管是整型数值,还是浮点型都可以用下画线
// 定义一个32位的二进制数,最高位是符号位。
int binVal = 0B1000_0000_0000_0000_0000_0000_0000_0011;
double pi = 3.14_15_92_65_36;
double height = 8_8_4_8.23;

二. 基本类型的类型转换

1. 自动类型转换


a:当把一个 范围小的数值或变量直接赋给另一个 范围大的变量时,系统可以进行自动类型转换
int a  = 6;
// int可以自动转换为float类型
float f = a;

<pre name="code" class="java">// 定义一个byte类型的整数变量
byte b = 9;
// 下面代码将出错,byte型不能自动类型转换为char型
// char c = b;

// 下面是byte型变量可以自动类型转换为double型
double d = b;

 
b:当把任何基本类型的值和 
字符串值进行连接运算时, 
基本类型的值将自动转换为字符串类型 
// 下面代码是错的,因为5是一个整数,不能直接赋给一个字符串
// String str1 = 5;

// 一个基本类型值和字符串进行连接运算时,基本类型值自动转换为字符串
String str2 = 3.5f + "";

// 下面语句输出7Hello!
System.out.println(3 + 4 + "Hello!");

// 下面语句输出Hello!34,因为Hello! + 3先会把3当成字符串处理,
// 而后再把4当成字符串处理
System.out.println("Hello!" + 3 + 4);

2. 强制类型转换
int iValue = 233;

// 强制把一个int类型的值转换为byte类型的值
byte bValue = (byte)iValue;
// 将输出-23
System.out.println(bValue);

double dValue = 3.98;
// 强制把一个double类型的值转换为int
int tol = (int)dValue;
// 将输出3
System.out.println(tol);

把233强转成byte如下图:


3. 表达式自动提升
表达式的数据类型将自动提升到与表达式中 最高等级操作数同样的类型
// 定义一个short类型变量
short sValue = 5;

// 下面代码将出错:表达式中的sValue将自动提升到int类型,
// 则右边的表达式类型为int,将一个int类型赋给short类型的变量将发生错误。
// sValue = sValue - 2;

表达式中包含字符串时
// 输出字符串Hello!a7
System.out.println("Hello!" + 'a' + 7);

// 输出字符串104Hello!
System.out.println('a' + 7 + "Hello!");
//'a'自动提升为int了


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值