2.4-全栈Java笔记:基本类型转化及常见错误和问题
2017-06-23 14:40
288 查看
数据类型的转换
自动类型转换
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。在图1所示,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会精度的损失。
可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围
【示例1】自动类型转换特例
short b = 12; //合法
short b = 1234567; //非法
强制类型转换
强制类型转换(Cast),又被称为造型,用于显式的转换一个数值的类型。 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
语法格式:
(type)var
运算符“()”中的type表示将值var想要转换成的目标数据类型。
【示例2】强制类型转
double x = 3.14;
int nx = (int)x; //值为3
char c = 'a';
int d = c+1;
System.out.println(nx);
System.out.println(d);
System.out.println((char)d);
当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。
【示例3】强制类型转换特例
int x = 300;
byte bx = (byte)x; //值为44
新手雷区
不能在布尔类型和任何数值类型之间做强制类型转换
基本类型转化时常见错误和问题
操作比较大的数时,要留意是否溢出,尤其是整数操作时。
【示例4】常见问题一
int money = 1000000000; //10亿
int years = 20;
int total = money*years; //返回的是负数
long totall = money*years; //返回的仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失
long total2 = money*((long)years); //先将一个因子变成long,整个表达式发生提升。全部用long来计算。
L和l 的问题:
不要命名名字为l的变量,l容易和1混淆。
long类型使用大写L不要用小写。
【示例5】常见问题二
int l = 2;
long a = 23451l;
System.out.println(l+1);
简单的键盘输入和输出
【示例6】使用键盘获取输入
import java.util.Scanner;
public class Welcome{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//将输入的一行付给string1
String string1 = scanner.nextLine();
//将输入单词到第一个空白符为止的字符串付给string2
String string2 = scanner.next();
//将输入的数字赋值给变量
int a = scanner.nextInt();
System.out.println("-----录入的信息如下-------");
System.out.println(string1);
System.out.println(string2);
System.out.println(a*10);
}
};
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop
数据类型的转换
自动类型转换
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。在图1所示,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会精度的损失。
图1 自动类型转换 |
【示例1】自动类型转换特例
short b = 12; //合法
short b = 1234567; //非法
强制类型转换
强制类型转换(Cast),又被称为造型,用于显式的转换一个数值的类型。 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
语法格式:
(type)var
运算符“()”中的type表示将值var想要转换成的目标数据类型。
【示例2】强制类型转
double x = 3.14;
int nx = (int)x; //值为3
char c = 'a';
int d = c+1;
System.out.println(nx);
System.out.println(d);
System.out.println((char)d);
示例2 运行效果图 |
【示例3】强制类型转换特例
int x = 300;
byte bx = (byte)x; //值为44
新手雷区
不能在布尔类型和任何数值类型之间做强制类型转换
基本类型转化时常见错误和问题
操作比较大的数时,要留意是否溢出,尤其是整数操作时。
【示例4】常见问题一
int money = 1000000000; //10亿
int years = 20;
int total = money*years; //返回的是负数
long totall = money*years; //返回的仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失
long total2 = money*((long)years); //先将一个因子变成long,整个表达式发生提升。全部用long来计算。
L和l 的问题:
不要命名名字为l的变量,l容易和1混淆。
long类型使用大写L不要用小写。
【示例5】常见问题二
int l = 2;
long a = 23451l;
System.out.println(l+1);
简单的键盘输入和输出
【示例6】使用键盘获取输入
import java.util.Scanner;
public class Welcome{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//将输入的一行付给string1
String string1 = scanner.nextLine();
//将输入单词到第一个空白符为止的字符串付给string2
String string2 = scanner.next();
//将输入的数字赋值给变量
int a = scanner.nextInt();
System.out.println("-----录入的信息如下-------");
System.out.println(string1);
System.out.println(string2);
System.out.println(a*10);
}
};
示例6 运行效果图 |
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop
相关文章推荐
- Java基本数据类型——Java基本数据类型汇总、自动类型转换(指导图)、强制类型转型乱码问题、运算时类型提升容易犯的错误常见问题汇总
- 常见对象StringBuffer、Arrays类和基本类型包装类+JAVA学习笔记-DAY13
- 马士兵Java课堂笔记-2-基本数据类型转换问题
- java 基本类型详解 及 常见问题
- 8.1-全栈Java笔记:基本数据类型的包装类
- java基础编程中常见的错误(基本类型)
- java 基本类型详解 及 常见问题
- 自己整理的:学习verilog DHL问题笔记——Quartus常见错误
- Java学习笔记---2.Java标识符和基本数据类型
- java学习笔记之---java基本类型
- Android问题集锦转载之三:Javah 常见错误记录-NDK与JNI除错
- Java第一课 Java的一些基本概念,Java的起源、为什么我们要学习Java语言,Java跨平台原理剖析;Java环境变量的配置,初学者常犯的问题,Java语言的基本数据类型和Java的语句。
- 从.Net到Java的自学笔记1:基本类型篇
- Java基础学习笔记(一)基本数据类型
- J2SE学习笔记3 — Java基本语法(2)基本数据类型
- 【原】java学习笔记 【二】 常见错误 Class files on classpath not found or not accessible for
- My_Java之笔记(2)-基本数据类型对象包装类
- 两个有趣的关于java里基本类型转换的问题
- Java基础篇笔记(二) ---容易忽视的表达式结果的类型,求概率、几率问题
- Java笔记之语言基础_基本数据类型