JAVA复习基础篇
JDK
JVM 核心类库 开发工具
JDK:java的开发工具
JRE:java的运行环境
基础语法
注释:对代码的解释说明
使用方法://注释信息
/*注释信息*/
/**
注释信息
**/
关键字:被java赋予了特定涵义的英语单词
class:用于(创建/定义)一个类(java最基本的组成单元)
字面量
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:
byte 数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值是 127(2^7-1);
默认值是 0;
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占 用的空间只有 int 类型的四分之一;
例子:byte a = 100,byte b = -50。
short:
short 数据类型是 16 位、有符号的以二进制补码表示的整数
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是 0;
例子:short s = 1000,short r = -20000。
int:
int 数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
一般地整型变量默认为 int 类型;
默认值是 0 ;
例子:int a = 100000, int b = -200000。
long:
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是 0L;
例子: long a = 100000L,long b = -200000L。
"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
float:
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
默认值是 0.0f;
浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。
double:
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
浮点数的默认类型为 double 类型;
double类型同样不能表示精确的值,如货币;
默认值是 0.0d;
例子:
double d1 = 7D ;
double d2 = 7.;
double d3 = 8.0;
double d4 = 8.D;
double d5 = 12.9867;
7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。
boolean:
boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子:boolean one = true。
char:
char 类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(十进制等效值为 0);
最大值是 \uffff(即为 65535);
char 数据类型可以储存任何字符;
例子:char letter = 'A';。
变量
类变量:独立于方法之外的变量,用 static 修饰。
实例变量:独立于方法之外的变量,不过没有 static 修饰。
局部变量:类的方法中的变量。
public class Variable{
static int allClicks=0; // 类变量
String str="hello world"; // 实例变量
public void method(){
int i =0; // 局部变量
}
}
修饰符
访问修饰符:
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
非访问修饰符:
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。
运算符
算术运算符:
+(加法) ---- 相加运算符两侧的值
-(减法) ---- 左操作数减去右操作数
*(乘法) ---- 相乘操作符两侧的值
/(除法) ---- 左操作数除以右操作数
%(取余) ---- 左操作数除以右操作数的余数
++(自增)---- 操作数的值增加1
--(自减)---- 操作数的值减小1
关系运算符:
==(判断)---- 检查如果两个操作数的值是否相等,如果相等则条件为真。
!=(判断)---- 检查如果两个操作数的值是否相等,如果值不相等则条件为真。
>(大于) ---- 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。
<(小于) ---- 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。
>=(不小于)--- 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。
<=(不大于)--- 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。
位运算符:
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
逻辑运算符:
&&(与) ---- 当且仅当两个操作数都为真,条件才为真。
||(或) ---- 如果任何两个操作数任何一个为真,条件为真。
!(反转)---- 如果条件为true,则逻辑非运算符将得到false。
赋值运算符:
+ =(加和赋值操作符)----C + = A等价于C = C + A
- =(减和赋值操作符)----C - = A等价于C = C - A
* =(乘和赋值操作符)----C * = A等价于C = C * A
。。。。。。。
条件运算符:if语句
循环结构
while 循环:
while( 布尔表达式 ) {
//循环内容
}
do…while 循环:
do {
//代码语句
}while(布尔表达式);
for 循环:
for(初始化; 布尔表达式; 更新) {
//代码语句
}
条件语句
if...else语句:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
if...else if...else 语句:
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
嵌套的 if…else 语句:
if(布尔表达式 1){
如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
如果布尔表达式 2的值为true执行代码
}
}
switch case 语句
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//可以有任意数量的case语句
default : //可选
//语句
}
StringBuffer
append(String s):
将指定的字符串追加到此字符序列。
reverse():
将此字符序列用其反转形式取代。
delete(int start, int end):
移除此序列的子字符串中的字符。
insert(int offset, int i):
将 int 参数的字符串表示形式插入此序列中。
insert(int offset, String str):
将 str 参数的字符串插入此序列中。
replace(int start, int end, String str):
使用给定 String 中的字符替换此序列的子字符串中的字符。
数组
声明数组变量
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
创建数组:
arrayRefVar = new dataType[arraySize];
多维数组:
type[][] typeName = new type[typeLength1][typeLength2];
Arrays 类:
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
流(Stream)
读取控制台输入:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
从控制台读取多字符输入:
int read( ) throws IOException
//使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRRead {
public static void main(String[] args) throws IOException {
char c;
// 使用 System.in 创建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入字符, 按下 'q' 键退出。");
// 读取字符
do {
c = (char) br.read();
System.out.println(c);
} while (c != 'q');
}
}
从控制台读取字符串:
String readLine( ) throws IOException
//使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRReadLines {
public static void main(String[] args) throws IOException {
// 使用 System.in 创建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Enter lines of text.");
System.out.println("Enter 'end' to quit.");
do {
str = br.readLine();
System.out.println(str);
} while (!str.equals("end"));
}
}
读写文件(file)
FileInputStream:该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
InputStream f = new FileInputStream("C:/java/hello");
FileOutputStream:该类用来创建一个文件并向文件中写数据。
OutputStream f = new FileOutputStream("C:/java/hello")
文件和I/O
File Class(类)
FileReader Class(类)
FileWriter Class(类)
Scanner 类
next() 与 nextLine() 区别:
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取