1.
源文件:
a)
符合Java语言命名规范是大前提
b)
一个源文件是文件文件
c)
一个源文件最多含有一个public类,可以包含不限数量的非public类。
d)
一个源文件的名必须和public类名相同,Public类不必一定有main()函数
e)
一个源文件中如果不含有public类,则可以随意命名
f)
一个源文件可以是空文件
g)
一个源文件内容可以仅仅是class classname{};
h)
一个源文件最多只能包含一个package声明语句,若没有,则在默认包中
i)
一个源文件有3种顶层元素,package,import,class,它们不必必须出现,但如果出现,则必须按上面顺序输出。
j)
Java语言的package是用来组织class的,包名是映射系统路径的,所以必须满足路径的要求,不能含有/,\,:,*,?等字符
k)
import用于引用其他包中的类,可以有多个,并用分号分隔开。
l)
如果引入了不同包中同名的类,则会产生编译错误,解决办法:使用类的全路径名
m)
Java.lang包自动引入
n)
要运行一个类,也不必必须有main()函数,可以用static代码快实现运行
o)
顶层类不能用private修饰
2.
关键字和标识符
Java语言共有51个关键字和保留字
abstract
|
boolean
|
break<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
|
case
|
catch
|
const
|
continue
|
Default
|
do
|
double
|
else
|
extends
|
false
|
final
|
finally
|
Float
|
for
|
goto
|
if
|
implements
|
instanceof
|
int
|
interface
|
long
|
native
|
new
|
null
|
protected
|
public
|
package
|
private
|
public
|
return
|
short
|
static
|
strictfp
|
super
|
switch
|
synchronized
|
This
|
throw
|
throws
|
transient
|
true
|
try
|
void
|
volatile
|
while
|
import
|
char
|
class
|
byte
|
|
|
|
|
goto 和const在java中未被使用,但程序员也不能使用
标识符不能用关键字和保留字,并且以字母,$或_开头,随后的则可以是字母,$,_和数字,构成标识符的只有这4种元素,不能有%,-,*,&,#等,最近的Java注解可以用@开头,但不能用于java变量,类名等标识符
封装类型的类名不是关键字
3.
基本数据类型
8中基本数据类型和其对应的8中封装类型
Boolean
|
1
|
int
|
32
|
byte
|
8
|
Float
|
32
|
Char
|
16
|
Long
|
64
|
short
|
16
|
double
|
64
|
boolean型取值只能是true和false,不能用1,0代替
4.
字符和字符串
Java有2种字符值:基本类型字符和字符串,不能给字符赋值,只能出现在赋值表达式的左边
单字符用单引号括起来,如’a’,此类型表示由键盘输入的各类字符
以\u做前缀,后跟16进制 的整数如’\u<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1234’,可以表示键盘无法输入的字符。
整数型文字有3种表示:默认是10进制,以0作为前缀代表的是8进制,以0x和0X做前缀的是16进制,16进制中的字母,大小写都可以
整型文字默认数据类型是32位,如果要声明为64位,需要加后缀l或L
浮点型可以用小数表示,也可以用科学计数法,科学计数法中,E大小写都可以
浮点型默认为64位,如果要声明为32位的单精度文字,则需要加f或F
虽然浮点型默认为double,也可以通过d或D明确声明。
字符串是用双引号括起来的字符序列,
Java中字符串是对象类型,字符是数据类型
5.
数组
数组是一个有方法和属性的对象,而不单是一个存储器,具有相同类型元素的有序集合
使用数组的3个步骤:声明数组、创建数组、初始化数组
数组长度只能在构造时指定,不能在声明时指定
数组大小指定方式:一个是变量,一个是明确的数
指定数组长度的只能是字节型,短整型和整型,不能是长整型,更不能是浮点型
声明和构造数组可以在一条语句中完成
数组对象通过new语句实例化后,系统会各元素赋予默认值。
也可以不用new初始化,而是直接指定值int[] i = {1,2};
数组的length属性用来存储数组的长度,也是数组的个数。注意是属性,不是方法。
访问数组元素可以用下标,数组下标基于0.,=前[]可以没有顺序,但new后面的[]必须相连。
6.
main方法
main()方法只是Java Appliction的入口,main()方法的public不是必须的,但static是必须的,可以在不构造类实例的前提下,直接执行。
Mian方法返回值必须声明为void
Java应用程序执行语句分4部分组成:命令名Java,命令参数,java源文件中公共类名,用户参数――――其中命令参数为可选,用户参数可以为多个传入main()方法
被main方法调用的必须是static的
7.
变量
成员变量是方法体外的变量
局部变量是方法体内的变量,不能被系统自动初始化,否则有编译错误
8.
参数传递
Java中所有参数传递都是值传递方式,当传递一个参数到方法时,方法获得的是传递参数的副本。适用于基本型变量,也适合引用型变量。
如果传递的是引用型变量,即一个对象,则传递进方法中的变量内部存放的是改对象内存空间的引用,即内存地址。引用类型在进行参数传递时,是将引用拷贝给形式参数,因此在方法中决不能改变原引用变量的引用,即不能使该引用变量应用其他不同的对象,但可以改变引用变量的内容,即引用对象的属性。2个引用指向同一个对象,所以可以改变对象的属性。
9.
垃圾回收器
System.gc和Runtime.getRuntime.gc()不会强制调用垃圾回收器立刻执行,只是一种建议,通知性的要求。
Finalize()方法在对象被垃圾回收器回收之前获得调用
10.
运算符
单目运算符>双目运算符>三目运算符> 赋值运算符(=)
7中单目操作符
~是按位取反运算符,
移位运算符
基本类型的封装类型比较也需要用equals
11.
修饰符
Java有10中修饰符:public,protected,(default),private
Final,abstract
Static,navite,transient,synchronized,volatile
修饰符出现顺序可以任意排列,如果是修饰方法,则必须在返回类型前。
Default不是java合法修饰符
Final和abstract二者不能连用,static和abstract也不能连用
Native方法使用非java的其他语言实现,代码体位于本地机上
Private方法表明只能被自身成员访问。
Transient和volatile只能修饰变量,不能修饰类和方法
12.
Final关键字用于类,方法,变量前,类被final后,所有方法也被final,所以无法被继承。Final类型变量可在在声明时不初始化,拖延到构造函数中也可以。
13.
abstract只修饰类和方法,表明未实现的含义。抽象方法不能有方法体,是指不能有{},而不是有{},但方法体为空。
当类中存在一个以上抽象方法时,类必须为抽象类,否则发生编译错误。所以如果继承了一个抽象类,就必须实现其所有方法,否则也要声明为抽象类。
当实现一个接口时,但没有实现该接口所有方法,该类必须被声明为抽象类。
一个抽象类,表明是未完全实现的概念,所以不能实例化。
14.
static只能修饰方法,变量和一段代码块,表明所修饰的属于类本身,而不是附属于各个类实例
方法内的变量不能被修饰为static的,非static可以调用static的,但不允许static调用非static的,除非通过类实例和自己内部变量
非static在运行期决定,static在编译期决定。
一个static不能被重载为一个非静态的,但可以被过载为一个非静态的
重载的含义是只有一种定义,只是原先的被后来的含义取代了,即形式不能变
过载是指一样东西有多种含义。
Static不是一个方法,是static后跟一个方法主体,主要用来初始化,即首次装在类时被执行。
15.
native只能用于修饰方法,不能用于修饰类和属性,方法前加上native为本地方法,主要是利用本地资源扩展java功能,而与java本身无关
本地方法如同一个抽象方法,并没有实际方法体
本地方法依赖本地平台其他语言编写的位于javaVM之外的函数库,用System.loadLibrary()方法装入。
本地方法的实现对调用者是透明的。Object的clone和notify方法就是本地方法
本地方法可以被private修饰
16.
transient只能用于修饰变量,本地变量也不能被transient修饰,
被transient修饰的不能被序列化,一旦被transient被修饰,该变量不在是对象持久状态的一部分,该变量内容在序列化后无法获得。
Transient的左右是保证变量的安全性。即是是私有变量,已经序列化处理,就可以用过读取一个文件,或拦截网络传输得到。
17.
synchronized只能修饰方法,或方法的一部分,但不能修饰构造方法
synchronzied用于在两个线程试图访问同一数据时避免毁损。
18.
类型转换和造型
对于基本数据类型,对于二元运算符,如果一个操作数float,long,double则另一个操作数被转换为float,long,double,否则全部转换为int
强制类型转换不会发生编译错误,但有可能会发生数据截取,数据丢失现象。
19.
引用类型转换
Java中有3中引用类型:类,接口和数组
类可以被转换为类和接口,但不能转换为数组
接口可以转换为类和接口,但不能转换为数组
数组可以转换为类,接口和数组,如果转换为类,则转换的目标类必须是object,如果转换为接口,则目标接口必须是cloneable和Serializable接口,如果转换为数组,则被转换数组元素类型必须可以被转换为目标数组的元素类型。
转载于:https://blog.51cto.com/orajc/114720