本文共 2527 字,大约阅读时间需要 8 分钟。
(1)定义:1.占据着内存中的某一个存储区域 ;
2.该区域有自己的名称(变量名)和类型(数据类型) ;
3.该区域的数据可以在同一类型范围内不断变化 ;
(2)使用原因:用来不断的存放同一类型的常量,并可以重复使用;
(3)变量的定义格式: A:数据类型 变量名 = 初始化值; B:数据类型 变量名; 变量名 = 初始化值;long 8
注意: 整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。B:byte,short,char -- int -- long -- float -- double。
byte ,short ,char 之间不会相互转换,他们在计算时首先会转换为 int 类型。
C:byte,short,char之间不相互转换,直接转成 int 类型参与运算。
int i = 123; long l = i;// 自动转换,不需强转float f = 3.14F; double d = f;(3)强制转换(向下转换) A:从大到小 B:可能会有精度的损失,一般不建议这样使用。
C:格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据);
long l = 123L; int i = (int) l;// 必须强转double d = 3.14; float f = (float) d;
总结 : 类型转化 小转大 , 自动 ! 自动类型转换 ( 也叫隐式类型转换 )
大转小 , 强转 ! 强制类型转换 ( 也叫显式类型转换 )
(4)思考题和面试题: A:下面两种方式有区别吗? float f1 = 12.345f;float f2 = (float)12.345;
答:f1 其实是通过一个 double 类型转换过来的。 而 f2 本身就是一个 float 类型。
B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3; byte b2 = 4; byte b3 = b1 + b2; // 错byte b4 = 3 + 4; // 正确
答:因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。 常量相加, 首先做加法, 然后看结果是否在赋值的数据类型范围内,如果不是才报错。
C:下面的操作结果是什么呢?byte b = (byte)130; //-126
答:计算方法: b=-(128-(130-128))
D:字符参与运算 是查找ASCII里面的值 'a' 97 'A' 65 '0' 48 System.out.println('a'); //a System.out.println('a' + 1); //98 E:字符串参与运算 这里其实是字符串的连接 System.out.println("hello"+'a'+1); //helloa1 System.out.println('a'+1+"hello"); //98hello System.out.println("5+5="+5+5); //5+5=55System.out.println(5+5+"=5+5"); //10=5+5
(3)把三元运算符的案例加入键盘录入改进。
示例:
import java.util.Scanner;class Year{ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入年份"); int a = in.nextInt(); String d ; if((a%4==0 && a%100!=0) || a%400==0){ System.out.println("该年是闰年"); }else{ System.out.println("该年不是闰年"); } }}//闰年条件:1.能整除4且不能整除100 2.能整除400