Java
学习日记
1
,
一个文件里可编写多个类,一个文件里不能有两个
public
类。独立运
行的类必须有
main()
函数。
2
,
Print()
不换行,
println()
打印新东西之前会换行。
3
,
在
set classpath
前后不能有空格,不能有中文符号。
4
,
三种注释方法:
//
、
/*…*/
、
/**….*/,/*….*/
不能嵌套,注释功能有:说
明程序的功能,可以取消代码,或者是回复代码。
5
,
标识符:由字母、数字、下划线、美元符号组成,不能以数字、关键
字开头。
6
,
常量:不变的数值。有整型,长整型,单精度、双精度、布尔常量、
字符常量、字符号常量。单精度常量以
’f’
结尾。
7
,
变量就是系统为程序分配的一块内存单元,用来存储数据。变量须先
定义后使用,不允许嵌套定义。
8
,
低字节的类型可以转换成高字节的类型,高字节的类型不可以转换成
低字节。
9
,
流程控制:
if
若有多条语句最好用大括号括起来。问号表达式:
y=x>0?x:-x
;若表达式为真,结果为
x
,反之为
-x.
10
,
Switch()
语句只接受
int
、
byte
、
char
、
short
类型数据,
switch
语句用
break
,多个条件执行相同命令:
case 1
:
case 2
:
……
break;
11,while
语句后若有“;”,不是不执行该语句,而是一直在执行空语句。
12
,
do..while..
语句不管三七二十一都执行该语句,
直到
while
语句为假,
且
while()
后有“;”。
13
,
system.in.read():
从键盘上读取数据;
14
,定义数组:
int[] x
或
int x[];arraycopy
数组拷贝。
15
,面向对象三大特征:封装、继承、多态。一个类中方法可以访问同类成员。
若局部变量和成员变量名字一样,则成员变量隐藏。
16
,一个类中方法可以访问同类的成员变量和局部变量。
17
,
“
==
”
与
“
equals()
”
的区别:
“
==
”
是比较两个对象的值是否相同,
而
equals()
是比较两个对象的内容是否相同。例如:
String str1=new String(“abc”);
String str2=new String(“abc”);
String str3=str1;
If(str1==str2)
System.out.println(“true”);
Else
System.out.println(“false”);
则结果返回为
false
。
因为
sr1
和
str2
在堆中首地址不一样,
而
str1
和
str3
首地址
是一样的。若
If(str1.equals(str2))
System.out.println(“true”);
Else
System.out.prinltn(“false”);
则结果返回的是
true
,因为比较的是内容。
18
,用
private
修饰的成员变量,在同一类中可以访问,在其他类中不可以访问。
程序代码要求强内聚弱耦合
19
,构造方法:和类名一样,无返回值,不能用
return
语句。实例对象一产生就
立马调用构造方法,
有几个实例对象就调用几次,
一次完成对实例对象的初始化,
若没有定义构造函数,
系统会自动生成一个空构造函数,
也可以进行重载。
若定
义了构造函数,则不再产生构造函数。了解构造函数执行过程。
20
,
finalize()
方法类似于
C++
中析构函数,在被清除之前会调用这个函数。
21
,
static
静态方法只能直接调用同类中其他的静态成员,而不能访问非静态成
员。
静态方法在使用之前不用创建任何对象,
而非静态对象在使用之前必须先创
建实例对象。静态方法不以任何方式调用
this
和
super
方法
22
,内部类:在类中直接定义内部类,内部类可以访问外部类成员变量。在程序
块中均可定义内部类。
23
,类的继承:在
java
中只支持单继承,但类可以有多层继承,子类继承了父
类所有的成员变量和成员方法,但不继承父类的构造方法,可使用
super
方法调
用父类的构造方法。
24
,
final()
可声明类、属性、方法,若声明为类,则该类不被继承。若声明为变
量,则该变量变为常量。若声明为方法,则该方法在子类中不能被覆盖。
25
,含有抽象方法的类称为抽象类。抽象方法:
abstract int aa(int x,int y);
一般方法:
int aa(int x,int y){
程序代码
}
两者的区别:前者必须由
abstract
修饰,只能声明,不能实例化,没有大括号;
后者有大括号,说明实现了代码,不是抽象方法。
26
,
特殊的抽象类称为接口,
接口中所有的方法都是抽象的。
一个类用
implements
去实现一个接口的所有方法。
27
,
一个类继承了另一个类,
不能使用比继承类的访问权限更低的权限去访问该
类。
28
,
del person.class
删除
person
字节码;
javac *.java:
编译所有源文件。
29
,
a instanceof B:
判断
a
是否是
B
的一个实例对象。对象的类型转换:子类可
以转换成父类。
Object
是所有类的父类。
30
,
异常是非致命的错误,
不是语法错误。
对异常处理用
try….catch..
。
用
throws
关键字抛出异常,也可以自定义异常。
try
后面可以跟多个
catch
捕获多个异常。
finally
语句无论如何都要执行,没有异常也会执行。
31
,包,
package
语句,为
java
源文件的第一条语句,若无包则为缺省无包。同
一个包中的类可以相互调用,
不必写上包名。
若为类加上包,
则应将源文件中所
有类都存到该包中。同一包中辆各类不一定在一个目录上。
32
,访问控制:类本身有两种访问控制:
public
和默认。父类不能是
private
和
protected
,否则子类无法继承。默认修饰的类只被同一包中的所有类访问。
33
,进程:正在进行的程序。线程:一个程序内部的一条执行线索,每个线程上
所要运行的程序代码段是多线程,用
Thread
类创建线程。
34
,
后台线程:
如果对某线程对象在启动
(调用
start
方法)
前调用了
setDaemon(true)
方法,
这个线程就变成了后台线程。
只要还有一个前台线程在运行,
这个进程就
不会结束。如果一个进程中只有后台线程在进行,这个进程就会结束。
Pp.join()
的作用是把
pp
所对应的线程合并到调用
pp.join();
语句的线程中。
35
,单线程和多线程的区别:必须等到
run()
调用后才实现
36
,要实现多线程必须要编写一个继承了
Thread
类的子类,子类要覆盖
Thread
类的
run
方法,在子类
run
方法中调用正在新程序中运行的程序代码,启动一个
新线程是调用
Thread
类的
start
方法,
Thread
类对象的
start
方法产生一个新线程,
并在该线程上运行
Thread
类对象中的
run
方法,控制线程是否结束。
37
,产生一个
TestThread
对象,四个
tt.start()
线程,共同去卖同
100
张车票:
TestThread
tt =new TestThread();
tt.start();
tt.start();
tt.start();
tt.start();
38,
多个线程共享同一数据就会发生线程安全问题。
39
,线程间的通信:
wait():
当前线程放弃监视器并进入睡眠状态直到其他线程进
入同一监视器并调用
notify()
为止。
40
,
API
:
应用程序编程接口。
Windous API
:
WIndous
操作系统提供的各种函数。
Java API
:
JDK
提供的各种
java
类
41
,
java
开发工具软件的基本特点:集成编辑软件功能,使用工程化管理,产生
应用程序的基本框架,支持调试,提供各种辅助工具。
42
,
JCreator Pro:
一个工作区可以管理多个工程,只能有一个活动工程。使用该
软件时不用完全记住函数或者参数,因为有提示,
43
,
String
类对象中的内容一旦被初始化就不能在改变。而
stringBuffer
类用于
封装,内容可以改变。
44
,
indexOf(int ch)
方法用于返回一个字符在字符串中第一次出现的位置,若没
有该字符,返回
-1.
45
,集合类,用于存储一组对象,其中每个对象称为元素,常用到的有:
Vetor
、
Enumeration
、
ArrayList
等。
46
,从键盘上读取数字:
int b=System.in.read();
Vector.addElement():
向
Vector
中添加元素。
47
,
Collection,Set
与
List
三者区别:
Collection
是父类,通用集合类,各元素对
象无指定顺序,允许有重复元素和
null
元素对象。
Set
为子类,无指定顺序,不
允许有重复元素,最多允许一个
null
元素对象。
List
也为子类,有指定顺序,允
许有重复元素和多个
null
元素对象。
48
,
Hashtable
类:
Hashtable
像
Vector
一样动态存储一系列对象,而且对存储的
每个对象都要安排另一个对象与之相关联。用
put()
存储数据:
Hashtable ht=new Hashtable();
Ht.put(“one”,new Integ
er(1));
检索数据用
get
方法:
Integer n=(Integer)ht.get(“two”);
If(n!=null)
{
System.out.println(“two=”+n);
}
要成功检索某个字,用作关键字的类必须覆盖
Object.hashtableCode()
和
Object.equals().
49.Properties
类:
Hashtable
类的子类,增加了讲
Hashtable
对象中的关键字和值
保存到文件和从文件中读取关键字和值到
Hashtable
对象中的方法。如果要用
Properties.store
方法存储
Properties
对象中的内容,
每个属性的关键字和值都必须
是
String
类型。
50
,
System
类中的
exit
方法用于结束
java
虚拟机运行的程序。
currentTimeMills():
可以检测程序运行的时间。
Java
虚拟机系统变量或者系统环境
变量都是变量和值成对出现。
getProperties
方法获取
java
虚拟机系统属性,
setProperties
方法用于设置系统属性。
51
,
Date
类:日期时间的类;
Calendar
:日期字段相互间的操作类;
Calendar.add():
增加时间;
Calendar.Set():
设置时间;
Calendar.get():
获取时间。
Calendar
类位于
java.util
包中
52.TimerTash
类实现了
Runable
接口,要运行的任务,由它里面实现的
run
方法
来完成。
53
,
Math
类包含了所用于几何和三角运算的方法,
Random
类一个伪随机数产生
类。
54
,
File
类:
IO
包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。
File f=new File(“hello.txt”);
If(f.exist()){f.delete();}
Else {f.createNewFile();}
System.out.println(“File name:”+f.getName());
获取文件的名称
System.out.println(“File path:”+f.getPath());
获取文件的路径
System.out.println(f.exist()?”exist”:”not exist”);
判断文件是否存在
55,RandomAccessFile
类提供了众多的文件访问方法;
RandomAccessFile
类支持
随机访问,但是不能访问其他的
Io
设备,如网络、内存映像等。
两种构造方法:
new
RandomAccessFile(f,”rw”);
可以读写
new
RandomAccessFile(f,”r”);
只读
56
,
流是字节序列的抽象概念。
文件是数据的静态存储形式流是数据传输时的形
态。流分为两种:节点流类和过滤流类。
57
,
InputStream
类方法:
int read();
读取方法
void close();
读取后要关闭文件
58
,
FileInputStream inone=new FileInputStream(“hello.test”);
等同于
File f=new File(“hello.test”);
FileInputStream intwo=new FileInputStream(f);
59,System.in
连接到键盘,而
System.out
连接到显示器,用
-1
作为键盘输入的结
束。
60
,
PipedInputStream
与
PipedOntputStream
类:创建管道通信,使用管道流类,
可以实现各个程序模块之间的耦合通信。
61
,
DateOutputStream
类提供了三个写入字符串方法:
-public final void writeByte(String s)
Java
学习日记
1
,
一个文件里可编写多个类,一个文件里不能有两个
public
类。独立运
行的类必须有
main()
函数。
2
,
Print()
不换行,
println()
打印新东西之前会换行。
3
,
在
set classpath
前后不能有空格,不能有中文符号。
4
,
三种注释方法:
//
、
/*…*/
、
/**….*/,/*….*/
不能嵌套,注释功能有:说
明程序的功能,可以取消代码,或者是回复代码。
5
,
标识符:由字母、数字、下划线、美元符号组成,不能以数字、关键
字开头。
6
,
常量:不变的数值。有整型,长整型,单精度、双精度、布尔常量、
字符常量、字符号常量。单精度常量以
’f’
结尾。
7
,
变量就是系统为程序分配的一块内存单元,用来存储数据。变量须先
定义后使用,不允许嵌套定义。
8
,
低字节的类型可以转换成高字节的类型,高字节的类型不可以转换成
低字节。
9
,
流程控制:
if
若有多条语句最好用大括号括起来。问号表达式:
y=x>0?x:-x
;若表达式为真,结果为
x
,反之为
-x.
10
,
Switch()
语句只接受
int
、
byte
、
char
、
short
类型数据,
switch
语句用
break
,多个条件执行相同命令:
case 1
:
case 2
:
……
break;
11,while
语句后若有“;”,不是不执行该语句,而是一直在执行空语句。
12
,
do..while..
语句不管三七二十一都执行该语句,
直到
while
语句为假,
且
while()
后有“;”。
13
,
system.in.read():
从键盘上读取数据;
14
,定义数组:
int[] x
或
int x[];arraycopy
数组拷贝。
15
,面向对象三大特征:封装、继承、多态。一个类中方法可以访问同类成员。
若局部变量和成员变量名字一样,则成员变量隐藏。
16
,一个类中方法可以访问同类的成员变量和局部变量。
17
,
“
==
”
与
“
equals()
”
的区别:
“
==
”
是比较两个对象的值是否相同,
而
equals()
是比较两个对象的内容是否相同。例如:
String str1=new String(“abc”);
String str2=new String(“abc”);
String str3=str1;
If(str1==str2)
System.out.println(“true”);
Else
System.out.println(“false”);
则结果返回为
false
。
因为
sr1
和
str2
在堆中首地址不一样,
而
str1
和
str3
首地址
是一样的。若
If(str1.equals(str2))
System.out.println(“true”);
Else
System.out.prinltn(“false”);
则结果返回的是
true
,因为比较的是内容。
18
,用
private
修饰的成员变量,在同一类中可以访问,在其他类中不可以访问。
程序代码要求强内聚弱耦合
19
,构造方法:和类名一样,无返回值,不能用
return
语句。实例对象一产生就
立马调用构造方法,
有几个实例对象就调用几次,
一次完成对实例对象的初始化,
若没有定义构造函数,
系统会自动生成一个空构造函数,
也可以进行重载。
若定
义了构造函数,则不再产生构造函数。了解构造函数执行过程。
20
,
finalize()
方法类似于
C++
中析构函数,在被清除之前会调用这个函数。
21
,
static
静态方法只能直接调用同类中其他的静态成员,而不能访问非静态成
员。
静态方法在使用之前不用创建任何对象,
而非静态对象在使用之前必须先创
建实例对象。静态方法不以任何方式调用
this
和
super
方法
22
,内部类:在类中直接定义内部类,内部类可以访问外部类成员变量。在程序
块中均可定义内部类。
23
,类的继承:在
java
中只支持单继承,但类可以有多层继承,子类继承了父
类所有的成员变量和成员方法,但不继承父类的构造方法,可使用
super
方法调
用父类的构造方法。
24
,
final()
可声明类、属性、方法,若声明为类,则该类不被继承。若声明为变
量,则该变量变为常量。若声明为方法,则该方法在子类中不能被覆盖。
25
,含有抽象方法的类称为抽象类。抽象方法:
abstract int aa(int x,int y);
一般方法:
int aa(int x,int y){
程序代码
}
两者的区别:前者必须由
abstract
修饰,只能声明,不能实例化,没有大括号;
后者有大括号,说明实现了代码,不是抽象方法。
26
,
特殊的抽象类称为接口,
接口中所有的方法都是抽象的。
一个类用
implements
去实现一个接口的所有方法。
27
,
一个类继承了另一个类,
不能使用比继承类的访问权限更低的权限去访问该
类。
28
,
del person.class
删除
person
字节码;
javac *.java:
编译所有源文件。
29
,
a instanceof B:
判断
a
是否是
B
的一个实例对象。对象的类型转换:子类可
以转换成父类。
Object
是所有类的父类。
30
,
异常是非致命的错误,
不是语法错误。
对异常处理用
try….catch..
。
用
throws
关键字抛出异常,也可以自定义异常。
try
后面可以跟多个
catch
捕获多个异常。
finally
语句无论如何都要执行,没有异常也会执行。
31
,包,
package
语句,为
java
源文件的第一条语句,若无包则为缺省无包。同
一个包中的类可以相互调用,
不必写上包名。
若为类加上包,
则应将源文件中所
有类都存到该包中。同一包中辆各类不一定在一个目录上。
32
,访问控制:类本身有两种访问控制:
public
和默认。父类不能是
private
和
protected
,否则子类无法继承。默认修饰的类只被同一包中的所有类访问。
33
,进程:正在进行的程序。线程:一个程序内部的一条执行线索,每个线程上
所要运行的程序代码段是多线程,用
Thread
类创建线程。
34
,
后台线程:
如果对某线程对象在启动
(调用
start
方法)
前调用了
setDaemon(true)
方法,
这个线程就变成了后台线程。
只要还有一个前台线程在运行,
这个进程就
不会结束。如果一个进程中只有后台线程在进行,这个进程就会结束。
Pp.join()
的作用是把
pp
所对应的线程合并到调用
pp.join();
语句的线程中。
35
,单线程和多线程的区别:必须等到
run()
调用后才实现
36
,要实现多线程必须要编写一个继承了
Thread
类的子类,子类要覆盖
Thread
类的
run
方法,在子类
run
方法中调用正在新程序中运行的程序代码,启动一个
新线程是调用
Thread
类的
start
方法,
Thread
类对象的
start
方法产生一个新线程,
并在该线程上运行
Thread
类对象中的
run
方法,控制线程是否结束。
37
,产生一个
TestThread
对象,四个
tt.start()
线程,共同去卖同
100
张车票:
TestThread
tt =new TestThread();
tt.start();
tt.start();
tt.start();
tt.start();
38,
多个线程共享同一数据就会发生线程安全问题。
39
,线程间的通信:
wait():
当前线程放弃监视器并进入睡眠状态直到其他线程进
入同一监视器并调用
notify()
为止。
40
,
API
:
应用程序编程接口。
Windous API
:
WIndous
操作系统提供的各种函数。
Java API
:
JDK
提供的各种
java
类
41
,
java
开发工具软件的基本特点:集成编辑软件功能,使用工程化管理,产生
应用程序的基本框架,支持调试,提供各种辅助工具。
42
,
JCreator Pro:
一个工作区可以管理多个工程,只能有一个活动工程。使用该
软件时不用完全记住函数或者参数,因为有提示,
43
,
String
类对象中的内容一旦被初始化就不能在改变。而
stringBuffer
类用于
封装,内容可以改变。
44
,
indexOf(int ch)
方法用于返回一个字符在字符串中第一次出现的位置,若没
有该字符,返回
-1.
45
,集合类,用于存储一组对象,其中每个对象称为元素,常用到的有:
Vetor
、
Enumeration
、
ArrayList
等。
46
,从键盘上读取数字:
int b=System.in.read();
Vector.addElement():
向
Vector
中添加元素。
47
,
Collection,Set
与
List
三者区别:
Collection
是父类,通用集合类,各元素对
象无指定顺序,允许有重复元素和
null
元素对象。
Set
为子类,无指定顺序,不
允许有重复元素,最多允许一个
null
元素对象。
List
也为子类,有指定顺序,允
许有重复元素和多个
null
元素对象。
48
,
Hashtable
类:
Hashtable
像
Vector
一样动态存储一系列对象,而且对存储的
每个对象都要安排另一个对象与之相关联。用
put()
存储数据:
Hashtable ht=new Hashtable();
Ht.put(“one”,new Integ
er(1));
检索数据用
get
方法:
Integer n=(Integer)ht.get(“two”);
If(n!=null)
{
System.out.println(“two=”+n);
}
要成功检索某个字,用作关键字的类必须覆盖
Object.hashtableCode()
和
Object.equals().
49.Properties
类:
Hashtable
类的子类,增加了讲
Hashtable
对象中的关键字和值
保存到文件和从文件中读取关键字和值到
Hashtable
对象中的方法。如果要用
Properties.store
方法存储
Properties
对象中的内容,
每个属性的关键字和值都必须
是
String
类型。
50
,
System
类中的
exit
方法用于结束
java
虚拟机运行的程序。
currentTimeMills():
可以检测程序运行的时间。
Java
虚拟机系统变量或者系统环境
变量都是变量和值成对出现。
getProperties
方法获取
java
虚拟机系统属性,
setProperties
方法用于设置系统属性。
51
,
Date
类:日期时间的类;
Calendar
:日期字段相互间的操作类;
Calendar.add():
增加时间;
Calendar.Set():
设置时间;
Calendar.get():
获取时间。
Calendar
类位于
java.util
包中
52.TimerTash
类实现了
Runable
接口,要运行的任务,由它里面实现的
run
方法
来完成。
53
,
Math
类包含了所用于几何和三角运算的方法,
Random
类一个伪随机数产生
类。
54
,
File
类:
IO
包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。
File f=new File(“hello.txt”);
If(f.exist()){f.delete();}
Else {f.createNewFile();}
System.out.println(“File name:”+f.getName());
获取文件的名称
System.out.println(“File path:”+f.getPath());
获取文件的路径
System.out.println(f.exist()?”exist”:”not exist”);
判断文件是否存在
55,RandomAccessFile
类提供了众多的文件访问方法;
RandomAccessFile
类支持
随机访问,但是不能访问其他的
Io
设备,如网络、内存映像等。
两种构造方法:
new
RandomAccessFile(f,”rw”);
可以读写
new
RandomAccessFile(f,”r”);
只读
56
,
流是字节序列的抽象概念。
文件是数据的静态存储形式流是数据传输时的形
态。流分为两种:节点流类和过滤流类。
57
,
InputStream
类方法:
int read();
读取方法
void close();
读取后要关闭文件
58
,
FileInputStream inone=new FileInputStream(“hello.test”);
等同于
File f=new File(“hello.test”);
FileInputStream intwo=new FileInputStream(f);
59,System.in
连接到键盘,而
System.out
连接到显示器,用
-1
作为键盘输入的结
束。
60
,
PipedInputStream
与
PipedOntputStream
类:创建管道通信,使用管道流类,
可以实现各个程序模块之间的耦合通信。
61
,
DateOutputStream
类提供了三个写入字符串方法:
-public final void writeByte(String s)