一 自动类型转换
1 自动类型转换图

数范围小的向数范围大的进行自动类型转换,如同把小瓶的水倒入大瓶,不会有任何问题。Java支持自动类型转换。
2 代码示例dom
Java代码 下载 spa
- public class AutoConversion
- {
- public static void main(String[] args)
- {
- int a = 6;
- // int能够自动转换为float类型
- float f = a;
- // 下面将输出6.0
- System.out.println(f);
- // 定义一个byte类型的整数变量
- byte b = 9;
- // 下面代码将出错,byte型不能自动类型转换为char型
- // char c = b;
- // 下面是byte型变量能够自动类型转换为double型
- double d = b;
- // 下面将输出9.0
- System.out.println(d);
- }
- }
3 运行结果htm
6.0
9.0
4基本类型的值和字符串链接代码示例blog
Java代码 下载 字符串
- public class PrimitiveAndString
- {
- public static void main(String[] args)
- {
- // 下面代码是错的,由于5是一个整数,不能直接赋给一个字符串
- // String str1 = 5;
- // 一个基本类型值和字符串进行链接运算时,基本类型值自动转换为字符串
- String str2 = 3.5f + "";
- // 下面输出3.5
- System.out.println(str2);
- // 下面语句输出7Hello!
- System.out.println(3 + 4 + "Hello!");
- // 下面语句输出Hello!34,由于Hello! + 3会把3当成字符串处理,
- // 然后再把4当成字符串处理
- System.out.println("Hello!" + 3 + 4);
- }
- }
5 运行结果get
3.5
7Hello!
Hello!34字符串处理
二强制类型转换
1概念介绍
但愿把上图的右边类型转化为左边类型,则必须进行强制的类型转换,强制类型转换格式是(targettype)value,相似把大瓶的水倒入小瓶,若是大瓶的水不少,将会引发溢出,从而形成数据丢失。这种转换也称为缩小转换。
2 代码示例it
Java代码 下载 io
- public class NarrowConversion
- {
- public static void main(String[] args)
- {
- 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);
- }
- }
3 运行结果class
-23
3
4 模拟随机字符串示例
Java代码 下载
- public class RandomStr
- {
- public static void main(String[] args)
- {
- // 定义一个空字符串
- String result = "";
- // 进行6次循环
- for(int i = 0 ; i < 6 ; i ++)
- {
- // 生成一个97~122的int型的整数
- int intVal = (int)(Math.random() * 26 + 97);
- // 将intValue强制转换为char后链接到result后面
- result = result + (char)intVal;
- }
- // 输出随机字符串
- System.out.println(result);
- }
- }
5运行结果
rxyelm
三 表达式自动提高
1 自动提高概念
当一个算术表达式包含多个基本类型的值时,整个算术表达式的数据类型将会自动提高,提高规则以下
全部byte类型,short类型和char类型将被提高到int类型
整个算术表达式类型自动提高到与表达式中最高等级操做数一样类型
2 代码示例
Java代码 下载
- public class AutoPromote
- {
- public static void main(String[] args)
- {
- // 定义一个short类型变量
- short sValue = 5;
- // 下面代码将出错:表达式中的sValue将自动提高到int类型,
- // 则右边的表达式类型为int,将一个int类型赋给short类型的变量将发生错误。
- // sValue = sValue - 2;
- byte b = 40;
- char c = 'a';
- int i = 23;
- double d = .314;
- // 右边表达式中在最高等级操做数为d(double型)
- // 则右边表达式的类型为double型,故赋给一个double型变量
- double result = b + c + i * d;
- // 将输出144.222
- System.out.println(result);
- int val = 3;
- // 右边表达式中2个操做数都是int,故右边表达式的类型为int
- // 所以,虽然23/3不能除尽,依然获得一个int整数
- int intResult = 23 / val;
- System.out.println(intResult); // 将输出7
- // 输出字符串Hello!a7
- System.out.println("Hello!" + 'a' + 7);
- // 输出字符串104Hello!
- System.out.println('a' + 7 + "Hello!");
- }
- }
3 运行结果
144.222
7
Hello!a7
104Hello!