什么是变量?
变量的定义是: 用来命名一个数据的标识符。
int finger = 5;
int 是数据类型,表示是整数
finger 是一个标识符
= 是赋值操作符
5 是一个数字类型的值
; 表示该行结束
变量的本质是具体的进程空间里的一个临时存储空间。
声明一个变量即:在进程中开辟一个空间分配一个随机地址,该空间拥有一个别名叫做变量名,空间中有储存某个数据的真实的物理的地址。
变量空间里存的永远是数据的地址。
c语言中的指针无非只是一个变量储存了另外一个变量的地址。
储存的地址有三种类型:
常量地址->常量池
对象地址->堆内存
变量地址->同进程(指针)
变量的基本类型
整形(4种)
byte
short
int
long
区别在于不同类型的整型,数值范围不一样
如果试图给byte类型的变量赋予超出其范围的值=,就会产生编译错误,这个时候就需要进行类型转换
类型 | 位 | 字节 | 数值范围 |
---|---|---|---|
byte | 8 | 1 | -128~127 |
short | 16 | 2 | -32768~32767 |
int | 32 | 4 | -2147483648~2147483647 |
long | 64 | 8 | 。。。 |
浮点型(2种)
float
double
默认的小数值是double类型的
所以 float f = 54.321会出现编译错误,因为54.321的默认类型是 double,
在数字后面加一个字母f,直接把该数字声明成float类型
float f2 = 54.321f
类型 | 位 | 字节 |
---|---|---|
float | 32 | 4 |
double | 64 | 8 |
字符型(1种)
char
用于存放一个字符(只能存放一个字符,超过一个字符就会产生编译错误),值用单引号’表示 (双引号表示字符串)
其长度为2字节/16位
布尔型(1种)
true
false
布尔型用于表示真假
其长度为1位
布尔型真正存放的数据是0(false) 1(true)
但是,不能直接使用0 1 进行赋值
注意:
Python中Sry是一种基本数学类型,但是在Java中String类型其实并不是基本类型,但是它是如此广泛的被使用,常常被误以为是一种基本类型。
变量的字面值
什么是字面值?
java的四类八种基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象。
所以给一个基本类型变量赋值就直接赋值操作。
而一个Hero对象赋值时会用到new关键字。
给基本类型的变量赋值的方式叫做字面值。
public class HelloWorld {
public static void main(String[] args) {
//整型
long a1 = 26L; //以L结尾的字面值表示long型
int a2 = 26; //默认就是int型
int a3 = 0x1a; //16进制
int a4 = 032; //8进制
int a5 = 0b11010; //2进制
//浮点型
float b1 = 123.4F;// 以F结尾的字面值表示float类型
double b2 = 123.4;// 默认就是double类型
double b3 = 1.234e2;// 科学计数法表示
//字符与字符串
double String c = "盖伦";
char c= 'c';
//转义字符
char tab = '\t'; //制表符
char carriageReturn = '\r'; //回车
char newLine = '\n'; //换行
char doubleQuote = '\"'; //双引号
char singleQuote = '\''; //单引号
char backslash = '\\'; //反斜杠
System.out.println();
}
}
基本类型转换
不同类型之间的数据可以互相转换,但是要满足一定的转换规则、
精度高的数据类型就像容量大的杯子,可以放更大的数据
精度低的数据类型就像容量小的杯子,只能放更小的数据
小杯子往大杯子里倒东西,大杯子怎么都放得下
大杯子往小杯子里倒东西,有的时候放的下,有的时候就会有溢出
低精度向高精度转换
int比较小,要放进比较大的long,随便怎么样,都放的进去。
同理,byte向short,folat向double也可以直接转换
高精度向低精度转换
byte b = 5;
int i1 = 10;
int i2 = 300;
b = i1;
b=i2;
b的类型是byte,其长度是8,最大只能放127
i1 的类型是int, 其长度是32,超过127
所以, 把int类型的数据转成为byte类型的数据,是有风险的
有的时候是可以转换的,比如 b = i1;
有的时候不可以转换 比如 b= i2;
这时只能采用强制转换,强制转换的意思就是,转是可以转的,但是不对转换之后的值负责
除此之外
虽然short和char都是16位的,长度是一样的
但是彼此之间,依然需要进行强制转换
char c = 'A';
short s = 80;
c = s;//之间转换会报错
c = (char)s;//强制转换成char型,编译成功
变量的命名规则
规则:
1.不能使用关键字
2.必须是一个连续的词(不能有空格)
3.由数字、字母、_、$组成
4.数字不能开头
5.严格区分大小写
规范:
1.类名 所有单词首母大小
YourGirlFriend
2.函数名,变量名 除了第一个单词外其他单词首字母大写
makeMoney
playGame
isContinue
3.常量名全大写 单词之间用_分开
play_game
_make_money
变量的作用域
变量处于不同的位置,其作用域是不一样的,且有不同的名称
分别是
1.字段,属性
当一个变量被声明在类下面 变量就叫做字段 或者属性、成员变量、Field 比如变量i,就是一个属性。
那么从第2行这个变量声明的位置开始,整个类都可以访问得到 所以其作用域就是从其声明的位置开始的整个类
2.参数
如果一个变量,是声明在一个方法上的,就叫做参数 参数的作用域即为该方法内的所有代码 其他方法不能访问该参数 类里面也不能访问该参数
3. 局部变量
声明在方法内的变量,叫做局部变量
其作用域在声明开始的位置,到其所处于的块结束位置