变量和常量
1.数据类型
分为基本类型和引用类型。
基本类型:
-
整数型:byte(1) short int (4) long(8) 例如:1 4 100
-
浮点型:float(4) double(8) 例如: 1.2 2.34
-
布尔型:true(2) false(2)
-
字符型: char(2) 例如: ‘a’ ‘b’ ‘中’
-
字符串型:string 例如:“abc” “a” “中国”
**注意:**字符型一定是单个字符。
单引号的一定是字符型。
双引号的一定是字符串性。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lmlX0vmD-1602507029817)(C:\Users\llhnb\Pictures\Saved Pictures\9.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtsLKpTu-1602507029819)(C:\Users\llhnb\Pictures\Saved Pictures\13.png)]
引用类型
类 接口 数组
2.什么是字节?
位(bit):是计算机内部数据的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
1B(byte,字节)= 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号。
1bit表示1位,1Byte表示一个字节
1B=8b
1KB=1024B
1M=1024KB
1G=1024M
3.整数拓展
进制:二进制0b 十进制 八进制0 十六进制0x
int i = 10; //十进制
int i2 = 010; //八进制
int i3 = 0x10; //十六进制0x
4.浮点数拓展:银行业务怎么表示?钱
BigDecimal 数学工具类
float 有限 离散 舍入误差 大约 接近但不等于
double
注意:最好完全使用浮点数进行比较。
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
float d1=231313123123123123f;
float d2 = d1+1;
System.out.println(d1==d2);
输出结果为:false
true
很明显f和d是相等的,本来应该输出true的。
5.字符拓展
所有字符本质还是数字
编码Unicode表:(a=97 A=65) 2字节 范围是0 - 65536
U0000 UFFFF
例:
public static void main(String[] args) {
char c = '\u0061';
System.out.println(c);
}
输出结果为:a
转义字符:\t 制表符 \n 换行
例:
System.out.println("Hello\tWorld");
输出结果为:Hello World(相当于中间多了个tab键)
System.out.println("Hello\nWorld");
输出结果为:Hello
World
例:
public static void main(String[] args) {
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
}
输出结果为:false
true
6.布尔值扩展
boolean flag=true;
if ( flag==true ) { } //新手
if ( flag ) { } //老手
代码要精简易读
类型转换
public static void main(String[] args) {
int i = 128;
//byte b = (byte)i;
double b = i;
System.out.println(i);
System.out.println(b);
}
输出结果为:128
-128
**注意:**此时出现了内存溢出的情况
强制转换 (类型)变量名 高–>低
自动转换 低–>高
把byte b = (byte)i;注释掉,换成 double b = i;
输出结果为:128
128.0
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题!(cast 转换的意思)
例: 精度问题
System.out.println((int)23.7);
System.out.println((int)-45.89f);
输出结果为:23
-45
public static void main(String[] args) {
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char)d);
}
输出结果为:98
b
操作比较大的数的时候,注意溢出问题
JDK7新特性:数字之间可以用下划线分割
例:
public static void main(String[] args) {
int money = 10_0000_0000;
System.out.println(money);
}
输出结果为:1000000000
int money = 10_0000_0000;
int years = 20;
int total = money*years;
System.out.println(money);
System.out.println(total);
输出结果为:1000000000
-1474836480(计算的时候溢出了)
int money = 10_0000_0000;
int years = 20;
long total2 = money*years; //默认是int,转换之前已经存在问题了
long total3 = money*((long)years);//先把一个数转换为long
System.out.println(money);
System.out.println(total2);
System.out.println(total3);
输出结果为:1000000000
-1474836480
2000000000
7.变量是什么?
就是可以变化的量!
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}] ;
例:
int a=0;
注意:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
8.变量作用域
类变量
实例变量
局部变量
例:
public class Demo08 {
//属性:变量
//实例变量:从属于对象;如果不进行初始化,这个类型的默认值 0或0.0
//布尔值:默认是false
//字符型和字符串型和引用型,默认值都是null
String name;
int age;
static double salary = 2500; // 类变量 static
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
System.out.println(salary);
}
public void add() {
}
}
输出结果为:10
0(默认值为0)
null(默认值为null)
9.变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词外,后面的单词首字母大写
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
10.常量
常量:初始化后不能再改变值!不会变动的值
所谓常量可以理解为一种特殊的变量,在程序运行过程中不允许被改变
final 常量名=值;
final double PI = 3.14;
常量名一般使用大写字符
例:
public class Demo09 {
//static和final都是修饰符,不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
输出结果为:3.14
输出2500,但如果把上面的static去掉,就会报错,输出不了。