day 02
1.关键字
- 被Java语言赋予了特殊含义的单词
- 每个关键都有自己特殊的含义和特定的使用场景
特点:
- 关键字全部都是小写
- 在一些高级编辑工具里面,关键字是有自己的特殊颜色标记的,例如在Notepad++里面关键字表现为紫色
- main不是关键字,但是也被JVM赋予了特殊的含义,JVM只识别它
2.标识符
- 对类,接口,变量和方法进行起名字的字符序列就叫做标识符
组成规则:
- 英文字母大小
- 可以有数字,但不能以数字开头
- 符号只有$和_
注意事项:
- 不能以数字开头
- 不能是Java中的关键字
- 区分大小写
命名规范:
1).对类,接口
进行起名字时,应遵循大驼峰命名法
- 如果是一个单词组成,那么首字母大写,其余字母小写
例:
Demo,Day01
- 如果是多个单词组成,那么所有的单词首字母大写,其余字母小写
例:
HelloWorld,DataClass
2).对方法,变量
进行起名字时,应遵循小驼峰命名法
- 如果是一个单词组成,那么所有字母小写
例:
main,show
- 如果是多个单词组成,那么出了第一个单词全部小写以外,其余单词首字母均大写,其他字母小写
例:
getMoney,getNameAndAge
3).常量
的命名
-
定义常量时经常要在常量前面加上final修饰符
-
常量在定义时进行初始化后就不可再次赋值,再次赋值会导致编译错误
-
如果是一个单词组成,所有字母大写
例:
PI
- 如果是多个单词连用,除了字母全部大写外,每个单词之间还要用_连起来
例:
HELLO_WORLD
4).包
的命名
如果是单级包 ,那么小写就行
如果是多级包 ,多级包的命名是以.进行连接 ,每个.前后都是一个文件夹;此时应该使用域名倒写的情况去命名
com.doit.demo1
com.doit.demo2
3.常量
- 值不能再去发生任何改变 叫做常量
分类:
a.字面值常量
- 整数常量:所有的整数,包括负数和正数
- 小数常量:所有的小数
- 字符常量:被’‘包括起来的字符称之为字符常量,而且’'中只能有一个字符;例如:‘a’,‘中’
- 字符串常量:凡是被""包括起来的,都称之为字符串常量;例如:“欢迎来到北京!”
- 布尔常量:true false
- 空常量:null
b.自定义常量
- 被final修饰的变量
final PI=3.14;
表现形式:(计算机只能识别二进制)
a.进制(逢几进一)的分类和组成
- 十进制(最常见):逢十进一 1—9
- 二进制:逢二进一 1—2 二进制需要在前面加上0b
- 八进制:逢八进一 1—8 八进制需要在前面加上0
- 十六进制:逢十六进一 1—F 10—15分别由A B C D E F表示 十六进制需要在前面加上0x
b.进制之间的转换
- 其他进制转十进制
每一位上的数乘以对应进制数的位数减一次方,做累加
- 十进制转其他进制
转成几进制就除以几,直到商为0,把余数反转
c.快速转码法
8421码: 用于十进制和二进制之间的相互转换
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
0b1101 1011 = 128+64+16+8+2+1= 219 用1所代表的数字做累加
0b1001 0111 = 128+16+4+2+1=151
56 = 0b0011 1000 和码表逐位相减,能减为1,不能减为0
69 = 0b0100 0101
二进制和八进制,十六进制的相互转换
a).
000 001 010 011 100 101 110 111
0 1 2 3 4 5 6 7
二进制转成八进制: 3位的二进制转成1位的八进制
0b100 101 101=0455
0b011 101 011 011=03533
八进制转二进制: 1位八进制转成3位的二进制
07654 = 0b111 110 101 100
0613 = 0b110 001 011
b).
0000 - 1111 = 0-15 = 0-f
二进制转十六进制: 4位的二进制转成1位的十六进制
0b111 1010 1110 = 0x7ae
0b1101 1010 1111 = 0xdaf
十六进制转成二进制: 1位的十六进制转成4位的二进制
0xf754 = 0b1111 0111 0101 0100
0xe12 = 0b1110 0001 0010
d.x进制和y进制之间的转换
通过十进制作为桥梁进行转换 : x进制转成十进制, 十进制的数转成y进制
有符号数的表示方法:(主要为了表示负数)
- 计算机中存储的都是二进制的补码
原码: 用最高位表示符号,其他为表示数值, 正数的符号位是0,负数的符号位是1
原码: 0000 0111
原码: 1000 0111
反码: 正数的反码和原码相同,负数的反码,符号位不变,其他位取反
反码: 0000 0111
反码: 1111 1000
补码: 正数的补码和原码相同, 负数的补码, 在反码的基础上,末位加1
补码: 0000 0111
补码: 1111 1001
4.变量
-
值可以随着需求的改变而在某个范围内随意改变
-
主要作用: 存储
-
变量名定义遵循小驼峰命名法
变量的定义格式:
数据类型 变量名 = 初始值;
初始化值:可以是常量 ,也可以是变量。一般情况下定义的时候,我们会在初始化值的位置上给常量。
变量的声明方式:
数据类型 变量名;
变量名 = 初始化值;
变量的注意事项:
- 变量所在的大括号叫做变量的作用域,同一个作用域中,不能有多个名字相同的变量
int score = 0;
int score = 100;//错误: 已在方法 main(String[])中定义了变量 score
- 定义在方法中的变量叫做局部变量,局部变量不赋初始值不能使用
int age;// 声明了一个int类型的age的变量
System.out.println(age);// 错误: 可能尚未初始化变量age
- 定义在类中方法外的变量叫做成员变量,成员变量可以没有初始化值 ,因为系统会默认给定一个初始化值
public class Demo{
int static grade;//静态只能调用静态 不能调用非静态
}
- 同一行可以定义多个变量(但是不建议这么使用,可读性查)
int a,b,c=10;// int a;int b; int c = 10;
System.out.println(a);//错误: 可能尚未初始化变量a
5.数据类型
分类:
- 基本数据类型
整数类: byte short int long
浮点(小数)类: float double
布尔类: boolean
字符类: char
- 引用数据类型
除了基本数据类型以外的所有类型:类 String 接口 数组
范围:
类型 | 字节 | 位数 | 默认值 | 范围 |
---|---|---|---|---|
byte | 1 | 8 | 0 | -128-127 |
short | 2 | 16 | 0 | -32768~32767 |
int | 4 | 32 | 0 | -2147483648~2147483647 |
long | 8 | 64 | 0 | -9223372036854775808~9223372036854775807 |
float | 4 | 32 | 0.0 | -3.4E38~3.4028235E38 |
double | 8 | 64 | 0.0 | -1.79E-308~1.7976931348623157E308 |
boolean | false | true或false | ||
char | 1 | 8 | \u0000 | 0~65535 |
各大类型变量的定义:
public class Demo3 {
//定义静态变量
static byte b;
static short s;
static int i;
static long l;
static float f;
static double d;
static boolean bool;
static String ss; //在同一个作用域里面,不能出现相同名字的变量,否则会报错
public static void main(String[] args) {
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);
System.out.println(f);
System.out.println(d);
System.out.println(bool);
System.out.println(ss);
/*
整数类型的默认值都是0
小数类型的默认值都是0.0
布尔类型的默认值是false
String类型对应的默认值是null
*/
}
}
注意事项:
-
整数的默认类型是int, 小数的默认类型是double
-
定义byte,short类型的变量,如果=右面的值在等号左边的类型范围之内,则可以直接赋值
-
定义float类型的小数一定要在小数的后面加上一个f
-
定义long类型的变量的时候,如果=右边的值在int的范围之内,则可以直接赋值,如果超出了int的范围,需要在整数的后面加上一个L (推荐使用L)
-
基本数据类型的默认值:
-
每一种基本数据类型都有默认值
-
只有定义在方法外的变量才有默认值,定义在方法中的是没有的
-
静态方法只能调用静态变量
整数类型的默认值都是0
浮点类型的默认值都是0.0
布尔类型的默认值是false
String类型对应的默认值是null
Java语言中,默认情况下所有的整数都是int类型,所有的小数都是double类型
运算规则:
byte,short的赋值
- byte,short,char不能直接运算的,需要先转换成int类型
- 给byte,short 类型的变量赋值的时候,要看等号右面是否有变量
如果都是常量 : 看最终运算出来的结果是否在等号左边的范围之内,如果在则可以直接赋值
如果有变量: 则按照运算的规则(byte,short,char不能直接运算的,需要先转换成int类型),如果的到的结果的范围大于等号左边类型的范围,则不能赋值
public class Demo5 {
public static void main(String[] args) {
byte b=10;
byte c=20;
byte num1=10+20;
byte num2=(byte)(b+c); //int num1=b+c;
/*
当byte,short和char类型参与变量运算的时候,他们会先提升为int类型,然后再去参与运算
而当其参与常量运算时,则不需要
*/
System.out.println(num1);
System.out.println(num2);
}
}
float的赋值
- byte,short,char—int—long—float—double
使用long类型给float赋值
long类型范围 2^63 -1
float类型范围3.4 x10^38
float f = 123L;//正确的
加法运算:
-
+号作为正号出现
-
+号作为加法运算符使用
-
+号作为字符串连接符使用
-
从左往右依次运算,有括号的先算括号里的
-
String 和任意类型做加法得到的都是字符串,做拼接操作
-
布尔类型不能和其他基本数据类型做运算
强制类型转换:
- 基本数据类型,除了布尔,其他七种类型之间都可以进行强转, 一般把大类型转成小类型
强制类型转换的格式:
目标类型 变量名 = (目标类型) 要转换的值;
byte by=(byte)130;
System.out.println(by);//-126