目录
关键字(共50个)
被Java语言赋予特殊含义的关键字
特点:字母全部小写
goto const 作为保留字存在,目前并不使用,可能其他语言有
用于定义数据类型的关键字 | ||||
class | interface | byte | short | int |
long | float | double | char | boolean |
void | ||||
用于定义数据类型值的关键字 | ||||
true | false | null | ||
用于定义流程控制的关键字 | ||||
if | else | switch | case | default |
while | do | for | break | continue |
return | ||||
用于定义访问权限修饰符的关键字 | ||||
private | protected | public | ||
用于定义类、函数、变量修饰符的关键字 | ||||
abstract | final | static | synchronized | |
用于定义类与类之间关系的关键字 | ||||
extends | implements | |||
用于定义建立实例及引用实例,判断实例的关键字 | ||||
new | this | super | instanceof | |
用于异常处理的关键字 | ||||
try | catch | finally | throw | throws |
用于包的关键字 | ||||
package | import | |||
其他修饰符关键字 | ||||
native | strictfp | transient | assert |
标识符(自己起的名字)
给类、接口、方法、变量等起名字时使用的字符序列
组成:数字、字母、_、$(不能数字开头、不能关键字、区分大小写)
例如:int _intValue123$;
命名规则:驼峰命名法
包命名:以包来组织Java中的类;为防类命名冲突,一个包不可以定义同名的类,不同包可以定义同名类 为了保证包名唯一,以域名(可以是虚拟域名)反转的形式来命名包:baidu.com -> com.baidu.name
单级包:一个全部小写的单词 test
多级包:以域名反转的形式来命名,单词之间以.分割 com.baidu.name
类和接口命名
单个单词:首字母大写,其余字母小写 Student
多个单词:每个单词首字母大写,其余字母全部小写 JavaBasic
变量和方法命名
单个:所有字母小写
多个:第一个单词首字母小写,其余单词首字母大写,其余字母全部小写 intValue
常量命名:所有字母全部大写
单个:全部大写 MAX NONE
多个:全部大写,单词之间以下划线分割 MAX_AGE MAX_VALUE
起名核心原则:见名知意
注释(解释说明的文字)
分类:
// 单行注释
/* 多行注释 (不能嵌套使用) */
/** 文档注释 (从注释上来看与多行注释没有区别,但是可以将文档注释内容提取出来生成JDK文档) */
常量
在运行过程中,其值不会发生改变的量(固定的)
分类:
字面值常量
自定义常量(面向对象部分讲)
字面值常量:
字符串常量:双引号引起来的内容 “wolf”
整形常量:所有整数 1 2 3
小数常量:所有小数 0.1 0.2 0.3
字符常量:用单引号引起来的内容 'a' '我'
布尔常量:只有 true 和 false
空常量:null(面向对象)
进制(逢X进一)
十进制:123 = 1 * 10^2 + 2 * 10^1 + 1 * 10^0
-
十进制每一位的数字的取值固定 0-9 【0~X-1】
-
每一位置上表示的值得大小是不一样的
-
如果我们将10进制的数字位置,从右到左编号 从0开始编号,每一位数字根据位置的不同,代表的数值也不同
每一位的数字,都有不同的权重
权重底:10 (基数X 和进指数有直接关系)
次方值:根据数字位置有关系
二进制:1100 = 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0 = (12)10 二进制 -> 十进制
十进制 -> 二进制:除留余数法
八进制:逢8进1 11 = 1 * 8^1 + 1 * 8^0 = 9 八进制 -> 十进制
十进制 -> 八进制:除留余数法
十六进制:逢16进1 1a = 1 * 16^1 + a * 16^0 = 26
二进制转其他:1100 -> 其他
八进制:(0-7)【000-111】 (001)(100) = (14)8 (14)8 = 1 * 8^1 + 4 * 8^0 = (12)10
十六进制:(0-15)【0000-1111】 1100 -> c
Java中不同进制语法:二进制 0b开头、八进制0开头、默认十进制、十六进制以0x开头
System.out.println(0b1100); // 12 对应的二进制表示
System.out.println(011); // 八进制表示 9
System.out.println(11);//十进制 11
System.out.println(0x11);//十六进制 17
负数表示方法:正和负两种不同状态,用一位二进制数,约定 0 表示正号, 1 表示负号,最高位为符号位
假设字长为8位,8位二进制数来表示一个数【0,0001100】把一个固定字长的二进制数的最高位,当做该二进制数符号位 <- 原码 表示
【原补码中逗号是没有的,为了方便区分】
原码表示
0,0001100 - 0,1110000 【减法】 计算机中,如果直接用原码来计算,数值位和符号位分开计算(很不方便),故引入补码(数值位和符号位一起运算)
二进制原码表示和补码表示关系
-
对于一个正数的原码表示,它的原码表示就是它的补码表示
-
对于一个负数的原码表示,它的原码表示和补码表示转化规则如下:
-
原码表示的符号位不变,其余各位,依次取反【0变1,1变0】
-
末尾 + 1
-
-12 = 1,0001100【原码】 -> 1,1110011【取反】 + 1 = 1,1110100【补码】 在计算机内存中以补码形式存储
补码对应的原码表示? 因为原码和补码,互为补码;对补码求补 -> 补码的补码 -> 补码对应的原码
1,1110100【原码】 -> 1,0001011【取反】 + 1 -> 1,0001100【补码】 = -12
注意!只有负数需要转换,正数的原码和补码一样
0 原码表示:::正0:0,0000000 负0:1,0000000【->1,1111111【取反】 + 1 = 0,0000000补码】
在补码中的0,只有一种表示方式 0,0000000
1,0000000 规定指定字长的补码表示中,让该补码表示多表示一个负数 【-128 ~ 127】
变量
在程序运行期间,其值可以改变的量。变量就是“一块”内存空间
变量定义格式:数据类型 变量名(标识符) = 变量值
不同类型变量之间运算和赋值
byte byteValue = 12;
int intValue = 100;
//对于变量而言,编译器不知道变量当前的值是多少,故不允许把大类型赋值给小类型
byteValue = byteValue + intValue;//错误 大类型->小类型
//对于jvm来说,先将byte变量读取出来,变成int类型的值,然后两个int类型做运算
intValue = byteValue + intValue;//正确 小类型->大类型
布尔类型变量不能直接转换成其他类型的值
默认转化规则(小类型 -> 大类型)
byte, short, char ——> int ——> long ——> float ——> double
byte, short, char 相互之间不转换,他们首先转换为int
强制转化语法:目标类型 变量名 = (目标类型)(被转换的数据)
byteValue = (byte)(byteValue + intValue);//假设确定byteValue + intValue的值在byte范围之内
byte c;
c = (byte)129;
/*
129 补码 0,10000001【2^7+1】
c 10000001 -> 1,1111110[取反后]
[低八位] + 1 [末尾加一]【补码的补码是原码】
1,1111111 原码表示 -> 十进制的值 64 + 32 +16 + 8 + 2 + 1 = 127【符号位-127】
*/
System.out.println(c);//-127
byte b1 = 1, b2 = 2, b;
b = b1 + b2;//错误
//两个byte类型的值参与运算,它们首先会被转化成int,同时不知道变量值是多少,故不能赋值b = 1+2;
b = 1+2;//正确 系统自己对常量值进行了判断
b = 1+127;//错误 超出byte范围【-128~127】
b = -1-127;//正确
作用域
变量有效的时间范围,通常用{ }来界定
用的时候分配内存空间,不用就收回
有效的时间范围:创建 至 回收前