一、变量与基本数据类型
1.变量:
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名“变量”。
2.变量分类:
按所属的数据类型划分:基本数据类型变量、引用数据类型变量。
按被声明的位置划分:局部变量(方法或语句块内部定义的变量)、成员变量(方法外部、类的内部定义的变量)。
注意:类的外面不能有变量的声明。
3.数据类型:
由于变量记录的数据内容大小不同, 导致所需的存储单元大小不同,在 Java 语言中使用数据类型的概念加以 描述 。
类型 | 占用内存 | 值范围(含边界值) | 默认值 |
---|---|---|---|
整数型(int) | 4 字节 | -2147483648 ~ 2147483647(稍大于 20亿) | 0 |
短整数型(short) | 2 字节 | -32 768 ~ 32 767 | 0 |
长整数型(long) | 8 字节 | -9 223 372 036 854 775 808L ~ 9 223 372 036 854 775 807L | 0 |
字节型(byte) | 1 字节 | -128 ~ 127 | 0 |
浮点型(float) | 4 字节 | -3.40292347E+38-3.40292347E+38 | 0.0f |
双精度型(double) | 8 字节 | -1.79769313486231570E+308-1.79769313486231570E+308 | 0.0d |
布尔型(boolean) | 1 字节 | true 或 false2 | false |
字符型(char) | 2 字节 | ‘ \u0000 - u\ffff ’ | ‘\u0000 ’ |
3.标识符:
Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。规则如下:
-
由字母、数字、下划线、和美元符号($)组成。
-
不能以数字开头。
-
区分大小写。
-
长度无限制。
-
不能是Java中保留的关键字。
标识符命名习惯:见名知意。
示例:
合法标识符:HelloWord、username2、user_name、_userName、$abc_123
非法标识符:2UserName、user#Name、Hello World、class
4.类型转换:
boolean 类型不能转换成任何其它数据类型。
自动类型转换:容量小的类型自动转换成容量大的数据类型
byte,short,int -> float ->long ->double
byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型
强制类型转换:容量大的类型转换成容量小的数据类型时,要加上强制转换符
long l = 100L;
int i = (int)l;
有可能造成精度降低或数据溢出,使用时要小心。
5.关键字大全:
Java 中有一些赋予特定的含义,有专门用途的字符串称为关键字(keyword)。全部是小写。
关键字:abstract、boolean、break、byte、case、catch、char、class、const、continue、default、do、double、else、extends、final、finally、float、for、goto、if、implement、import、instanceof、int、interface、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while、assert、enum
保留字:没有定义用途,但保留备用。
goto、const
关键字补充说明:
1.访问修饰符(3个)
public、protected、private
作用:用来修饰类(接口、抽象类)、方法、属性、构造方法、常量、主函数
2.类、接口、抽象类(9个)
class、interface、abstract——定义
extends——继承类、implements——实现接口
new——新建一个对象、super——调用父类方法、this——指代当前对象
instanceof——通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
3.数据类型(13个)
void——没有返回值
byte、short、int、long——整型数据
float、double——浮点型数据
char——字符型数据
boolean——判断型数据
enum——枚举
null、true、false——值类型
4.线程(2个)
synchronized——线程同步(修饰方法、代码块,方法、代码块的同步)
volatile——线程同步(修饰属性,属性的同步)
5.异常(5个)
throw——抛出方法代码中的异常给方法自身。使用位置:方法中间
throws——抛出方法中的异常给调用者。使用位置:方法外部
try——捕获{}中代码是否有发生异常
catch——处理try捕获的异常
finally——不管有没有异常发生都会执行的代码块
6.返回(1个)
return
7.循环、条件(10个)
if、else、switch、case、break、default、continue、while、do、for
8.包(2个)
package、import
9.瞬时的(1个)
transient关键字只能修饰变量,而不能修饰方法和类。
10.断言(1个)
assert
11.调用底层代码(C\C++)(1个)
native
12、不可变的——final(1个)
修饰属性、常量、局部变量、参数——作用:数据是不可改变的
修饰类——作用:修饰的类不能被继承
修饰普通方法——作用:修饰的方法不能被重写
13.静态的——static(1个)
修饰属性、常量
修饰内部类
修饰普通方法
作用:所有使用static关键字修饰的内容会最先执行。static修饰的内容在内存中只有唯一的一份(存储在静态内存空间中)。
14.格式规范——strictfp(1个) 即 strict float point (精确浮点)。
二、二进制概述
1.二进制:
计算机中的数据都以二进制数字保存。
-
二进制:逢二进一。即只有 0、1 两个值。
如:十进制的 10 在计算机内保存为二进制的 1010
-
计算机中信息的存储单位
位(Bit):表示一个二进制数码 0 或 1,是计算机存储处理信息的最基本的单位。
字节(Byte):一个字节由 8 个位组成。它表示作为一个完整处理单位的 8 个二进制数码。
2.补码:
事实上,计算机内的二进制数值是以补码形式表示的。
正数的补码:和其原码的形式是相同的。
负数的补码:按位取反再加 1。
由此可知,二进制补码数值的最高位(最左位)是符号位:该位为 0,表示数值为正数;该位为 1,表示数值为负数。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最 高位(符号位)有进位,则进位被舍弃。
3.二进制和十进制之间的转换:
-
二进制数转换成十进制数
按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
例:原码 1011.01 = 1×2 3+0×2 2+1×2 1+1×2 0+0×2 -1+1×2 -2 = 8+0+2+1+0+0.25 =11.25
-
十进制转换成二进制
整数部分:"除 2 取余,逆序排列"法
小数部分:"乘 2 取整,顺序排列"法
4.十六进制:
二进制表示法太冗长,所以在程序中一般喜欢用十六进制。
十六进制:基数为十六,逢十六进一。它用 abcdef 表示从 0-9 之上的值。
Java 中十六进制数据要以 0x 或 0X 开头。如:0x23D
十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可。
5.八进制:
八进制:基数为八。
Java 中八进制数据要以 0 开头。如:0123
八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。
现在的计算机系统很少用八进制的了。
三、方法
1.概述:
方法用于封装一段特定的逻辑功能。
方法的主要要素有:权限修饰符 方法名、参数列表和返回值。
2.格式:
权限修饰符 返回值类型声明 方法名称(参数列表){
方法中封装的逻辑功能;
return 返回值;
}
3.权限修饰符详解:
访问修饰符 | 同一个类 | 同一个包 | 不同包,子类 | 不同包,非子类 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
4.返回值详解:
方法调用结束后可以返回一个数据,称之为返回值。
方法在声明时必须指定返回值的类型。
通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。
如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。
5.参数列表详解:
方法的参数列表:在调用时传递给方法,需要被方法处理的数据。
在方法定义时,需要声明该方法所需要的参数变量。
在方法调用时,会将实际参数值传递给方法的参数变量。必须保证传递参数的类型和个数符合方法的声明。
四、运算符
1.算数运算符:
++:如果是变量前缀:先对此变量加 1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量加 1
--: 如果是变量前缀:先对此变量减 1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量减 1
2.赋值运算符:
赋值运算符作用是将一个值赋给一个变量,运算顺序从右到左
3.关系运算符:
关系运算符作用是比较两边的操作数,结果总是 boolean 型的。
4.逻辑运算符:
逻辑运算符用于对 boolean型结果的表达式进行运算,运算结果总是 boolean 型。
5.字符串连接运算符:
String s="He" + "llo"; 结果"Hello"
"+"除了可用于字符串相连接,也能将字符串与其它的数据类型相连成一个新的字符串。
如:String s="x" + 123; 结果"x123"
6.三目运算符:
X ? Y : Z
X 为 boolean 类型表达式,先计算 x 的值,
若为 true,整个三目运算的结果为表达式 y 的值,
若为false,则整个运算结果为表达式 z 的值。
例: int score = 75;
String type = score >=60 ? "及格" : "不及格";
7.操作符的优先级:
表达式的运算按照运算符的优先顺序从高到低进行,同级运算符从左到右进行。
五、命名规范(软性建议):
类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
变量名规范:全部小写。
六、转义字符:
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了 -- 百度百科
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\n | 换行,将当前位置移到下一行开头 | 010 |
\r | 回车 ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\\ | 代表一个反斜线字符''\" | 092 |
\' | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |