Java数据类型转换问题
我们知道Java的数据类型分为基本数据类型和引用数据类型,今天就谈谈基本数据类型的转换问题
Java中有整型变量、实型(常量)、字符型数据还有boolean数据类型
我们把数据类型之间转换的优先级可以进行一个如下的划分
byte—>short—>char—>int—>long—>float—>double
这个优先级的划分我们可以很清晰的看出
- 浮点型数据的优先级是最高的
- 其次就是整型
- 然后boolean类型没了,因为这个类型只有true、false两种情况,并不适用于类型转换
- 整型的优先级比浮点型低是因为,浮点类型的数据如果转换成整型就会损失精度,就是小数点后面的数会被省略
- 这种排序还有个问题,就是数据溢出的问题,byte占一个字节,占8位,最大值才127,int是占4个字节、有4x8=32位,已经到了2^32次幂,将近20亿
- 所以优先级高的往优先级低的转换就需要强制类型转换,这个等会介绍
接下来就介绍一下两种转换类型
1、强制类型转换
强制类型转换有两点要求:
- 转换的数据类型必须是兼容的
- 格式:(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));

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

2、隐含强制类型转换
只有两个:
- 整型变量默认是 int
- 浮点类型默认为 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));
















