Java数据类型转换问题

我们知道Java的数据类型分为基本数据类型引用数据类型,今天就谈谈基本数据类型的转换问题

Java中有整型变量、实型(常量)、字符型数据还有boolean数据类型

我们把数据类型之间转换的优先级可以进行一个如下的划分

byte—>short—>char—>int—>long—>float—>double

这个优先级的划分我们可以很清晰的看出

  1. 浮点型数据的优先级是最高的
  2. 其次就是整型
  3. 然后boolean类型没了,因为这个类型只有true、false两种情况,并不适用于类型转换
  4. 整型的优先级比浮点型低是因为,浮点类型的数据如果转换成整型就会损失精度,就是小数点后面的数会被省略
  5. 这种排序还有个问题,就是数据溢出的问题,byte占一个字节,占8位,最大值才127,int是占4个字节、有4x8=32位,已经到了2^32次幂,将近20亿
  6. 所以优先级高的往优先级低的转换就需要强制类型转换,这个等会介绍

接下来就介绍一下两种转换类型

1、强制类型转换

强制类型转换有两点要求:

  1. 转换的数据类型必须是兼容的
  2. 格式:(type) value type 示例如下:
int i1 = 123;
byte b =(byte)i1;

由此可以看出,Java的强制类型还是和大部分程序语言是一样的

1.1 对强制类型转换的扩展

String类型—>int类型

		String a="123";
		int num=Integer.parseInt(a);//使用 Integer,parseInt方法能把String返回一个整型
		System.out.println("a+1="+(a+1)+"\nnum+1="+(num+1));

Java数据类型转换问题和以及变量类型判断问题_优先级

int类型—>String类型

		int a=123;
		String num=String.valueOf(a);//String.valueOf方法
		System.out.println("a+1="+(a+1)+"\nnum+1="+(num+1));

Java数据类型转换问题和以及变量类型判断问题_整型_02

2、隐含强制类型转换

只有两个:

  1. 整型变量默认是 int
  2. 浮点类型默认为 double 类型,如果要使用 float 类型,则需要在小数点最后一位加个f,如123.43f是float类型

Java数据判断问题

我们在使用判断结构的时候,如果是整型或者浮点型,可以直接用 “==” 就够了
但是我今天要讲的问题是如何判断两个字符串是否相等(在jre 1.8版本中可以用 ==),看这个例子

		String a="abc";
		String b="aBc";
		
		if(a.equals(b)) {
			System.out.println("a == b");//精准匹配,常用于用户登陆账户密码时用的比较多 
		}else if(a.equalsIgnoreCase(b)) {
			System.out.println("忽略大小写对比");

再给大家分享一个好玩的代码:

		String str="123213123214234325412354125";//这是随便打的
		for(int i=0;i<str.length();i++)
				System.out.println(str.substring(i, i+1));