java总结(1)

JDK java软件开发工具包

包括java运行环境,java开发工具,java基础的类库
bin 存放java各种可执行文件
jre java运行环境
lib jdk所需要的一些资源文件和资源包

helloworld背后的故事
1.编写代码
2.编译
机器不认识我们写的代码,需要进行编译成字节码,编译后的文件叫做class文件
3.类装载ClassLoader
执行程序寻找和装载所需要的类
4.字节码校验(byte-code)
对class文件的代码进行校验,保证代码的安全性
5.解释(Interpreter)或者JIT(just in time,java即时编译)
可是机器也不能认识class文件,还需要被解释器进行解释,或者是通过即时编译成为本地机器码,机器才能最终理解我们所表达的东西
6.运行
最后由环境对代码进行运行
开发期=====编译期=======运行

虚拟机的功能
(1)通过classloader寻找和装载class文件
(2)解释字节码成为指令并执行,提供class文件的运行环境
(3)进行运行期间垃圾回收
(4)提供与硬件交互的平台
所有与平台有关的东西都是由虚拟机去处理

java技术三大特性
(1)垃圾回收
(2)安全性
(3)虚拟机

for和while
for 如果用于控制循环的增量定义for语句中,那么该变量只在for语句内有效(节省内存)
for和while可以互换。如果需要定义循环增量,用for更为合适

break与continue
break语句 应用范围为选择结构和循环结构
continue语句:应用于循环结构,特点为结束本次循环,继续下一次循环
break与continue单独存在,下面有任何语句,都执行不到。

函数
修饰符 返回值类型 函数名(参数类型 形式参数){
执行语句;
return 返回值;
}
当函数的返回值类型为void时,函数中return语句省略不写。

&和&&
&无论左边是true是false,右边都运算。
&&当左边为false时,右边不运算。

|和||
|两边都参与运算。
||当左边为true,右边不运算。

位运算符
<<其实就是乘以2的移动的位数次幂(向左移)

>>就是除以2的移动的位数次幂
最高位补什么有原来的数据最高值而定
如果最高位0,右移后,用0补空位
如果最高位1,右移后,用1补空位

面向对象

什么是类

类是用来描述对象的。由于对象是虚拟出来的东西,是看不见摸不着的,我们需要在程序中使用对象,就需要用一种方式来描述对象,然后根据这个描述来创建对象。
类和对象的关系
对象是类的实例,类是对象的抽象。
怎么定义类
将一系列特征相似的对象的共同特征及行为抽取出来进行描述,写在一个class中,用成员变量描述对象的特征,用成员方法来描述对象的行为。
怎么使用类创建对象
使用new关键字和指定类名来创建一个对象。
对象的产生
Person p = new Person();
先在堆内存中创建了一个对象,然后栈内存中创建一个变量引用了对象的地址。

static关键字
static关键字用来修饰类的成员,被这个关键字修饰的成员都和类加载有关。
JVM运行时不会将所有类加载到内存,因为无法确定程序中要使用哪些。类在第一次使用时加载,只加载一次。
静态变量
用static修饰的变量就是静态变量。

静态变量在类加载后就初始化。
静态变量被类的所有实例所共享。
静态变量可以使用 类名.变量名 形式访问。

如果在定义一个类的时候,发现一个成员变量需要被所有实例所共享,那么这个成员变量就需要定义为 static 的。


静态方法

用 static 修饰的方法就是静态方法。

静态方法在类加载后就可以使用。

静态方法可以使用 类名 . 方法名 形式访问。


静态方法不能直接访问外部非静态成员。

因为外部非静态成员必须在类创建对象之后才能使用,而静态方法可以在没创建对象时就使用。

如果要在静态方法内部访问外部非静态成员,需要先创建该类对象,通过对象访问。

静态方法中不能使用 this关键字。

因为 this 是个引用,哪个对象调用方法就引用哪个对象。 而静态方法有可能不是被对象调用的, this 无从引用。

如果一个方法不用访问对象的非静态成员,那么就可以定义为静态的,这样使用者就不需要创建对象,直接用类名调用。

静态方法通常是作为工具方法或者一个可以产生对象的方法被声明,目的是为了让调用者更方便的使用,不必创建对象。


静态代码快

用 static 修饰的代码块就是静态代码块。

静态代码块在类加载后执行。

静态代码块和静态方法相同,不能使用外部非静态成员。

静态代码块执行和静态变量的初始化顺序由代码从上到下顺序决定


静态内部类

用 static 修饰的内部类就是静态内部类。

静态内部类在类加载后就可以创建对象,无需创建外部类对象


向上转型

把一个子类当做父类来用是可以的,因为父类有的子类都有

把一个父类当做子类来用就不可以了,因为子类有的父类不一定有

可以定义一个父类类型的变量来记住子类对象,这在程序中称之为向上转型


posted on 2013-02-23 19:39  蜜雪薇琪  阅读(127)  评论(0编辑  收藏  举报