3 Java 基础__不同数据类型之间的运算及进制

本文详细介绍了Java中的基本数据类型之间的运算规则,包括自动类型转换和强制类型转换。特别强调了整型常量默认为int型,浮点型常量默认为double型,以及String类型的特殊性质,如连接运算。同时,提供了示例代码来展示这些规则,并通过练习加深理解。此外,还提及了进制转换和二进制表示的相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型之间的运算规则:

这里只讨论七种数据类型间的运算,不包含Boolean类型。

  1. 自动类型转换:
    范围由低到高:
    byte 、char、 short --> int --> long --> float --> double
    容量小的数据类型的变量和容量大的数据类型的变量一起运算,结果自动提升为容量大的数据类型。
    特别的,当byte、short、char三种类型的变量做运算时结果为int类型(eg:short 和short做运算用int接受)。

  2. 强制类型转换:

/*
强制类型转换
1,需使用强转符()
2,强制类型转换可能导致精度损失
*/

class  VariableTest2
{
	public static void main(String[] args) 
	{
		double d1=12.9;
		int i1=(int)d1;  //截断操作,只取整数部分
		System.out.println(i1);
	}
}

在这里插入图片描述

  1. 变量运算规则的两个特殊情况
    编码情况一:
    ①情形一:(编译通过)
class  VariableTest2
{
	public static void main(String[] args) 
	{
		long l=123213;  //没有以 l结尾,竟然没有报错
		System.out.println(l);
	}
}

在这里插入图片描述

末尾少加l没有报错,原因是123213这个数默认是int型了,int型赋值给long型,属于自动类型转换。所以不报错。
②情形二:(编译不通过)

class  VariableTest2
{
	public static void main(String[] args) 
	{
		long l=123213;  //没有以 l结尾,竟然没有报错
		System.out.println(l);
		long l1=213354655562;
		System.out.println(l);
	}
}

在这里插入图片描述报错,213354655562已经超过了int的范围;即”long l1=213354655562l;“(若末尾加上l,就不会报错,可以完整输出)
在这里插入图片描述

在这里插入图片描述
注意
float f1=12.3;若此句末尾不加f,会报错,编译失败。因为12.3不加f默认为double型,double型向float转会报错,所以必须加f。

编码情况二:
整型常量默认类型为int型,浮点型常量默认为double型

class  VariableTest2
{
	public static void main(String[] args) 
	{
		byte b=12;
		byte b1=b+1;  //编译失败
		float f1=b+12.3; //编译失败
	}
}

在这里插入图片描述

字符串类型String

①String不是基本数据类型,属于引用数据类型;
②声明时用一对"";
③String可以与8种基本数据类型变量做运算,且运算只能是连接运算(+),并且运算结果仍为String类型。

class StringTest 
{
	public static void main(String[] args) 
	{
		int number=1001;
		String numberStr="学号:";
		String info=numberStr+number;   //+为连接运算,拼一起
		boolean b1=true;
		String info1=info+b1;
		System.out.println(info1);
	}
}

在这里插入图片描述

  1. 练习
class StringTest 
{
	public static void main(String[] args) 
	{
		char c='a'; //A:65 a:97
		int num=10;
		String str="hello";
		System.out.println(c+num+str);//1o7hello
		System.out.println(c+str+num);//ahello10
		System.out.println(c+(num+str));//a10hello
		System.out.println((c+num)+str);//107hello
		System.out.println(str+num+c);//hello10a

	}
}

在这里插入图片描述

  1. 练习
    实现打印输出内容:* *(星号tab键星号):
class StringTest 
{
	public static void main(String[] args) 
	{
		System.out.println("*	*");//√
		System.out.println('*'+'\t'+'*');//×:'*'对应一个Ascll码,与后面做的是加法运算,结果为int型,int再与后面运算仍未int型
		System.out.println('*'+"\t"+'*');//√:中间为String型,+表示连接运算,\t为制表符
		System.out.println('*'+'\t'+"*");//×:前面两个做一次加法运算,后面做一次连接运算
		System.out.println('*'+('\t'+"*"));//√:后面两项先运算,结果为string再与前面连接

	}
}

在这里插入图片描述在这里插入图片描述在这里插入图片描述注:练习二中1和4最后都应该为int型(P60)

进制(常识,了解)

在这里插入图片描述对应:
在这里插入图片描述
在这里插入图片描述

class BinaryTest 
{
	public static void main(String[] args) 
	{
		int num1=0b110;
		int num2=110;
		int num3=0127;
		int num4=0x110A;
		System.out.println("num1="+num1);
		System.out.println("num2="+num2);
		System.out.println("num3="+num3);
		System.out.println("num4="+num4);
	}
}

都呈现为10进制
在这里插入图片描述

在这里插入图片描述最高位是符号位。0为正,1为负

十进制转化为二进制(除2取余的逆)例如:13–>1101
在这里插入图片描述二进制转八进制(三个看作一位)及二进制转16进制(四个看作一位)
在这里插入图片描述八进制转二进制(一个数拆成三位)及十六进制转二进制(一个数拆成四位)拼一起:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

过期动态

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

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

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

打赏作者

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

抵扣说明:

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

余额充值