JAVA基础03
前言:
To自己:每天都给自己一个希望,试着不为明天而烦恼,不为昨天而叹息,只为今天更美好。
类型转换
-
由于Java是强类型语言,所以要进行有些运算时,需要用到类型转换。类型转换就是将一个值从一种类型转换为另一种类型的过程。eg:可以将String类型的数据转换为数值类型,也可以将任意类型的数据转换为String。
低 ------------------------------------------------> 高
byte,short,char->int->long->float->double
-
运算中,不同类型的数据先转化为同一类型,然后运算。
转换的两种方式:
-
强制类型转换(又称显式类型转换):
将高精度的变量值赋值给低精度的变量。语法格式:(类型名)要转换的值/变量名,eg:
int a=(int)45.23; //此时输出a的值
当把一个整数赋值给一个byte、short、int、long型变量时,不可以超出这些变量的取值范围,否则要进行强制转换,并且出现内存溢出现象。eg:
int i=1(28;
byte b=(byte)i; //输出结果为-128分析:byte占内存空间为1字节,取值范围为-128~27。
-
自动类型转换(又称隐式类型转换):
将低精度的变量值赋值给高精度的变量,系统自动执行,程序员无需操作。eg:
int x=50; //声明int型变量
float y=x; //将x赋值给y,输出结果为50.0注意点:
-
不能对boolean类型进行转换,boolean只能是true或false
-
不能把对象类型(定义的变量也是对象)转换为不相干的类型
-
在把高精度转为低精度时,强制转换
-
转换的时候,可能存在内存溢出或精度问题!
常见问题:
-
在操作比较大的书的时候,注意溢出问题,eg:
int money=10_0000_0000; //JDK7新特性,数字之间用下划线分割,并且分割线并不会被输出
int years=20;
int total=moneyyears;//结果-1474836480,计算的时候溢出了
long total2=moneyyears;//默认是int,转换之前已经存在问题了
long total3=money*years;//结果20000000000,先把一个数转为long
-
-
变量
-
变量是什么:就是可以变化的量!
-
Java是一种强制类型语言,每个变量都必须声明其类型
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
声明变量,eg:
int age;//声明变量
char a=‘y’;//声明变量并赋值
编写上述程序会产生什么样的效果呐?
要了解这个问题就要对变量的内存配置有一定的认识,如图,就是将上述程序代码在内存中的情况表现了出来。
变量占用的内存空间
系统(OS)区 程序(Program)区 int age char a 数据(Data)区 此表可知,系统的内存可大略分为3个区,即系统(OS)区、程序(Program)区和数据(Data)区。当程序执行时,程序代码会加载到内存中的程序区,数据暂时存放在数据区中。假设上述两个变量定义在方法体中,则程序加载到程序区中。当执行此行程序代码时,会在数据区配置空间给这两个变量。
注意事项:
-
每个变量都有类型,类型可以时基本类型,也可以时引用类型
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以英文分号结束
-
变量作用域
类变量
实例变量
局部变量
public class a{
static int b=0;//类变量
string str="Hello Word";//实例变量,从属于a,如果不进行初始化,就是这个类型的默认值
public void method(){
int i-0;//局部变量,必须声明和初始化
}
}
补充:数值类型的初始化
int为0,小数0.0,字符为0000,boolean默认值是false,除了基本类型,其余都是null
常量
-
初始化后不能再改变值,不会变动的值
-
所谓常量可以理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
final 常量名=值;
final double PI=3.14;
-
常量名一般使用大写字母表示
变量的命名规范
所以变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则:monthSalarychu除了第一个简单的词外,后面的单词首字母大写
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线,eg:MAX_VALUE
类名:首字母大写和驼峰原则,Man,GoodMan
方法名:首字母小写和驼峰原则,run(),runRUN()