JDK Java Develop Kit 即Java开发工具包
J2SDK Java2 Software Develop Kit Java软件开发包
JRE Java Runtime Environment 即Java运行环境,通常已包含在J2SDK中了.如果我们仅仅是为了运行Java程序,而不是从事Java开发,我们可以直接下载JRE,在我们的程序上安装
Java开发工具包(JDK)分为三个版本:J2SE J2EE J2ME
Java代码是解释执行的,我们使用Java编译器将Java代码编译成字节码,这是一种中间代码,然后由Java解释其解释执行。而C++程序是编译执行的,C++程序代码被编译为本地机器指令,然后执行
Java语言的一个重要特性就是在语言级支持多线程的程序设计。
Java是动态的,其动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是我们采用C++语言进行面向对象程序设计所无法实现的。
Java跨平台的原理:通过Java虚拟机(JVM)来实现的。
Java应用程序的开发周期包括编译、下载、解释和执行几个部分。
Java编译程序(javac.exe)将Java源程序翻译为JVM可执行代码——字节码,Java编译器不将对变量和方法的引用编译为数值引用,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创建内存布局,然后再通过查表来确定一个方法所在的地址。
运行JVM字节码的工作是由解释器(java.exe)来完成的。解释执行过程分三步进行:代码的装入(由类装载器完成)、代码的效验和代码的执行
Java的平台独立性是以JVM为基础的,但JVM不是跨平台的
j2sdk文件夹下
bin(binary二进制):放的是java的可执行程序
demo:sun公司提供的一些例子程序
lib:类库和一些jre,java运行时的环境
int[] num; num=new int[3] 或 int[] num=new int[3]以给数组分配大小。
可以定义同时初始化:int[] num={1,2,3}
但int[] num;num={1,2,3}//error
也可以int[] num=new int[]{1,2,3}
int[] num=new int[3]{1,2,3}//error
还可以这样(每行分配不同长度):int [][] num;
num=new int[3][];
num[0]=new int[5];
num[1]=new int[3];
num[2]=new int[2];
可以这样int [][] num={{1,2,3},{4,5},{6}}
例如:有一个类Point
Point pt; //声明对象
pt=new Point();//常见对象实体
pt.x……
构造方法的名字和类名相同,并且没有返回值
构造方法主要用于为类的对象定义初始化状态
我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创加类的实例
java的类都要求有构造方法,如果没有定义构造方法,java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。当我们用缺省的构造方法初始化对象时,系统用默认值初始化对象的成员变量。但只要类中自己提供了构造函数,那么java就不会提供缺省的构造方法。
各种数据类型的默认值为:数值型 0;boolean false; char ‘/0‘; 对象 null;
为对象分配内存空间
引起对象构造方法的调用
为对象返回一个引用
this变量代表对象本身
当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量
使用this简化构造函数的调用。例如:
class Point
{
int x,y;
Point(a,b)
{
x=a;
y=b;
}
Point()
{
this(1,1) //会调用带参数的构造函数
}
void output()
{
System.out.println(x);
System.out.println(x);
}
public static void main(String[] args)
{
Point pt;
pt=new Point();
pt.output();
}
静态方法和静态变量是属于某一个类,而不属于类的对象
静态方法和静态变量的引用直接通过类名引用
在静态方法中不能调用非静态的方法和引用非静态的成员变量。但反之,可以
可以用类的对象obj去调用静态的方法method(),如obj.method()
类变量和类方法在类加载的时候也被加载并分配了内存空间
使用关键字final定义常量(其值在运行时不能改变):final double PI=3.1415926
作为一种约定,在定义常量时,通常采用大写形式
final常量可以在声明的同时赋初值,也可以在构造函数中赋初值(若为static常量则不可)
为了节省内存,我们通常将常量声明为静态的(static):static final double PI=3.1415926
在Java中,不允许多继承。构造方法是不能被继承的
特殊变量super,提供了对父类的访问
可以使用super访问父类被子类隐藏的变量或覆盖的方法
每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错
通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。若将子类对象的引用传递给声明为父类的参数,若子类有这个方法,就调用子类的方法,若子类没有这个方法,就调用父类的方法