java学习1

1,path 设置java执行文件的目录
2,classpath 设置java的class类的目录
3,classpath 这个环境变量设置后,就不会再找当前目录,而是直接在classpath目录下查找。
解决方法,设置环境变量的时候,多设置一个".",例如:d:\;.(.代表当前目录)
4,如果在命令行中设置path或者classpath的时候(set path=d:\;.),仅仅在当前命令行中有效,
再启动一个命令行就没有效果了,可以在当前命令行中输入start来打开另外一个命令行,这样就能够
继承当前命令行中的设定了。
另外,在windows的环境变量中设置path和classpath可以解决上述问题。
注意:windows环境变量要设置系统的环境变量,不要设置administrator的环境变量,系统变量优先于administrator的环境变量。

5,Java代码是解释执行的,我们使用Java编译器将Java代码编译成字节码,这是一种中间代码,然后由Java解释器解释执行。

而C++程序是编译执行的,C++程序代码被编译为本地机器指令,然后执行。

6,与平台无关的
Java作为一种网络语言,其源代码被编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。Java源程序被编译成一种与机器无关的字节码格式,在Java虚拟机上运行。
7,Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是我们采用C++语言进行面向对象程序设计所无法实现的。在C++程序设计过程中,每当在类中增加一个实例变量或一个成员函数后, 引用该类的所有子类都必须重新编译,否则将导致程序崩溃。Java从以下几个方面采取措施来解决这个问题。Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下来,传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数值偏移量。一个在存储器中生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定。这样,对类中的变量和方法进行更新时就不至于影响现存的代码。 解释执行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次,随后代码便可以全速执行。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。Java还简化了使用一个升级的或全新协议的方法。如果你的系统运行Java程序时遇到了不知怎样处理的程序,Java能自动下载你所需要的功能程序。

8,Java源文件的编译过程
Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译程序将Java源程序翻译为JVM可执行代码—字节码。这一编译过程同C/C++的编译有些不同。当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创建内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了Java的可移植性和安全性。
9,Java字节码的两种执行方式
1、即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
2、解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。
  通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。
10,8种基本数据类型:byte、short、int、long、char、float、double、boolean
byte:8位;有符号的数据类型; 范围:-128 到 127

short:16位;范围:-32768 到 32767

int:4个字节;有符号;

long:8个字节;有符号;

char:2个字节;无符号;范围:0到65535 ; 注:java中使用unicode编码格式

float:4个字节;

double:8个字节

boolean:

11,类中的main方法一定要定义成static,否则需要先实例化然后再调用,就无法运行了。

12,类中定义一个static的变量,可以用来作为计数,应为这个类的各个实例,都是使用同一个static变量。

13,类中定义一个final常量,声明的同时必须进行初始化,如果不初始化,则必须在构造函数中进行初始化。

定义final常量,为了节省内存,通常定义成static。

14,子类继承父类,子类实例化时,自动调用父类的构造函数。如果父类中的构造函数带有参数,则子类的构造函数

中必须显式的调用父类的构造函数,例如:super(1,2);

15,javac -d . java文件 -》编译java文件的时候自动生成package。并且放到本目录下

javac -d 目的文件夹 java文件 -》编译java文件的时候自动生成package。并且放到【目的文件】 中


16,类中java.lang包会自动导入,不需要进行import。

同目录下的类可以直接访问,不同目录下的类需要import,才能够使用

17,类的访问说明符

public:任何地方都可以访问

default:同一个包下可以访问,包以外不能访问

18,类的修饰符

final:不能被继承(String类就是一个final类,不能被继承)

abstract:抽象类中的方法在子类中必须被实现

19,方法的访问说明符

同类 同包 子类 通用性

public: OK OK OK OK

protected: OK OK OK

default: OK OK

private: OK

20,方法的修饰符

final: 不能被继承,不能被覆盖。(所有的static和private方法自然就是final方法)

21, 抽象方法和抽象类
在类中没有方法体的方法,就是抽象方法。
含有抽象方法的类,即为抽象类。
如果一个子类没有实现抽象基类中所有的抽象方法,则子类也成为一个抽象类。
我们可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象。
构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法。
22, JNI(Java Native Interface),它允许Java虚拟机(JVM)内部运行的Java代码能够与用其它编程语言

(如C、C++、汇编语言)编写的应用程序和库进行互操作。
23,java中对象被回收之前会调用finalize()方法,该方法定义在Object类中,可以被重写。

调用垃圾回收方法gc()。 System.gc();

24, 接口中所有的方法都是public abstract。

在接口中声明方法时,不能使用native、static 、final 、synchronized 、private 、protected等修饰符。
和public类一样,public接口也必须定义在与接口同名的文件中。

接口中可以有数据成员,这些成员默认都是public static final。

25,内部类

内部类可以访问外部类中的所有成员
内部类不可以在外部类的静态方法中被实例化。

内部类不能在其他类中被直接实例化,因为它所属的外部类还没有实例化,实例化方法:Outer.Inner inner = Outer.new Inner();

内部类和外部类中变量名相同的场合,内部类中访问外部类的变量使用Outer.this.index;

在方法中定义的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明final。
内部类可以声明为private或protected;还可以声明为abstract或final。
内部类可以声明为static的,但此时就不能再使用外部类的非static的成员变量和非static的成员方法;
非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值