—> 把这几百页的书从头到尾看一遍梳理一下期末考点吧!
基本数据类型与数组
标识符和关键字
- 字母、下划线、美元符号、和数字
- 第一个不能是数字
- 不能是关键字
- 不能是true false null(尽管他们不是关键字)
- 区分大小写
基本数据类型
8种基本数据类型
boolean
byte,short,int,long
char
float,double
- int 四字节
- byte一个字节
- short两个字节
- long八个字节
- 没有无符号即unsigned
- char两个字节,没有负数
- 使用unicode字符集,前128个是ASCII
- ‘\u0041’表示A
- (char)65 a
- double y = 0.4 小于 float x = 0.4f;
类型转换运算
低赋值给高会自动转换,反之需要强制转换
低到高排序:byte short char int long float double
int x = (int)34.89
float x = 12.3 这是错误的,默认浮点数常量是double,如果不转换会报错“possible loss of precision”
输入输出数据
输入
Scanner reader = new Scanner(System.in);
reader调用以下方法,返回值就是读取的内容:
nextBoolean() nextByte() nextShort() nextInt() nextLong() nextFloat() nextDouble()
输出
System.out.println() System.out.print() System.out.printf()
Syetem.out.println("hhh |
printf用法类似C
System.out.printf("%d %f",12,1,3);
数组
int arr[]
int[] arr
int arr[][]
int[][] arr
和c不同,这里只是生命数据类型,而不能定义其中多少个元素,所以必须
int arr[] = new int[10];
当然也可以分步
- arr.length可以获取数组长度
- 二维数组中的每行长度可以不相同
- sout输出数组会输出引用地址,而对于char数组会输出内容,可以用过
""+arr
来输出引用
运算符、表达式和语句
运算符与表达式
- && || !
- =左边必须是变量
- 位运算符
- &
- |
- ~(单目)
- ^
- instanceof(左边是对象,右边是类,返回值是true false
语句
分号是空语句
for与数组
for(int i : arr)
{
System.out.println(i);
}应用(连续读入)
while(reader.hasNextDouble())
{
double x= reader.nextDouble();
}
类和对象
包名第一部分不能是“java”
创建类不加public即默认为friend,不能使用protected和private
基本类型的类封装
Double Float Byte Short Integer Long Character
通过调用如
intValue() shortValue()
来获取基本类型值可以调用这些类的一些方法例如
Character.toUpperCase() Character.isLowerCase()
子类与继承
不持支多继承
class Child extends Parent{
...
}继承不会继承private,而且当不在一个包的时候也不会继承friend
尽管如private的变量不会被继承,但依然在创建对象的时候会分配内存,因为有可能会用方法调用这些变量
instanceof 如果左边的是右边或是右边子类创建的话就是true
重写(override)以后,想要调用父类的变量或者方法需要super
重写不允许降低访问权限但是可以提高
子类构造方法中如果明确调用哪一个父类的构造方法的话,就会调用Parent()这个无参的方法,但如果用super指出,就必须是子类构造方法中的第一句。
final修饰一个类,则该类不可以被继承
final修饰一个方法,则该方法不可以被重写
final修饰变量,则成为常量
上转型对象会失去一些子类的属性和方法,按时上转型对象会调用子类重写的(非静态)方法(多态….)
上转型对象可以再强制转化为子类对象
abstract所在的类必须是abstract类
抽象类不可以被new,必须被继承重写abstract方法
接口与实现
- 接口包括常量(final)和抽象方法。
- 变量默认必须是 public final static ,所以可以省略
- 抽象方法可以省略(putlic abstrac)
- 实现接口implements xxx,xxx,xxx
- 必须重写所有方法,且必须用public修饰
- 接口回调,有点类似于向上转型吧(也就是接口的多态)
- 如果接口作为参数,那么可以将实现该接口的类的实例传进去
内部类和异常类
所谓内部类就是在一个class里面再定义一个class,可以通过xxx.xxx来访问这个class
- 内部类可以用static修饰
- 异常类
常用实用类
String
- 创建
String s = new String("hhhh")
- 还可以传入字符数组
- 可以引用常量
String s1,s2; s1 = "hhh";s2 = "ggg";s1 == s2(true);
- 字符串的并置,当两个常量并置时,得到的是在常量池,如果有变量则新生成变量
- 常用方法:
length() equals(String s) startsWith() endsWith() compareTo()大正小负 contains() indexOf() lastIndexOf() subString( int start, int end ) trim()
- 字符串与基本数据的转化
Integer.parseInt(s)其他类似
- String类不可以有子类
- 符串与基本数据的相互转化
public static int parseInt(String s)
String str = String.valueOf(12313.9876);
- 字符串与字符数组
void getChars()
char[] toCharArray()
- 正则,主要是
matches
和replaceAll
以及split
,返回值分别是boolean String String[]
StringTokenizer
StringTokenizer = 呢哇StringTokenizer("you are welcome"); |
Scanner
默认将字符串按照空格分隔,调用
next()
或者nextInt()
等方法一个一个返回,知道hasNext()
返回falseString NBA = "I Love This Game";
Scanner scanner = new Scanner(NBA);使用正则表达式作为分隔标记解析字符串
Scanner sc = new Scanner("hh 12 hh 24 hh");
sc.usDelimiter("[^0123456789.]+");//设置分隔符传入
File
对象,通过next()
和nextLine()
获取输入- next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
- nextLine():
- 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
- 如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取
- next():
StringBuffer()
StringBuffer是可更改的,append()
追加
public char charAt(int n); |
Date
Date time = new Date(); |
数字格式化
String s = String.format("%.2f",3.1415); |
输入、输出流
文件
流
FileInputStream、FileOutputSteam
FileReader、FileWriter
BufferedReader、BufferedWriter
对于缓冲流:
构造方法
BufferedReader(Reader in);
BufferedWriter(Writer out);方法
FileReader inOne = new FileReader("student.txt");
BufferedReader inTwo = BufferedReader(inOne);
String strLine = inTwo.readLine();
FileWriter tofile = new FileWriter("hello.txt");
BufferedWriter out = BufferedWriter(tofile);
out.write(str);
out.newLine();注意要先关闭缓冲流,再关闭输入输出
多线程
创建
extends Thread
,然后重写run方法new Thread(Runnable target)
,构造函数的参数是implement Runnable的实例,该实例也需要重写run方法
运行
start()
常用方法
sleep(int millsecond)
isAlive()
currentThread()
目标对象和线程间的关系(完全解耦和弱耦合)
线程同步
用
synchronized
修饰的方法必须遵守同步机制,即当一个线程正在使用时,其他线程若要使用则必须等待协调同步
wait()
来中断当前线程notifyAll()
通知中断的线程继续执行,先中断先继续Timer
该类在javax.swing
我太困了……..-_-……..
泛型与集合框架
泛型
class Cone<E> { |
链表
LinkedList<String> mylist = new LinkedList<String>(); |
遍历
LinkedList<String> mylist = new LinkedList<String>(); |
哈希表
HashMap<String,Student> hashtable = HashSet<String,Student>(); |