java基础知识总结
Java分为三个体系:
- JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
- JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
- JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)
Java 开发环境配置:
在"系统变量"中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击"编辑",不存在则点击"新建"。
变量设置参数如下:
变量名:JAVA_HOME
变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根据自己的实际路径配置
变量名:CLASSPATH //1.5版本不需要
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"."
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
Java语言是解释型的:
Java程序在Java平台上被编译为字节码格式(class文件,用javac编译),然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
编写Java程序时,应注意以下几点:
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口:所有的Java 程序由public static void main(String args[])方法开始执行(必须是static)。
Java标识符:
关于Java标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是任何字符的组合(首字母不能以数字 、-等开始)
- 关键字不能用作标识符
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在- - 方法中,方法结束后,变量就会自动销毁,局部变量是在栈上分配的。局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量(静态变量):类变量也声明在类中,方法体之外,但必须声明为static类型(不需实例化,可直接引用)。静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
静态变量在程序开始时创建,在程序结束时销毁。类变量被声明为public static final类型时,类变量名称必须使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
构造方法:
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
源文件声明规则:
当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。
一个源文件中只能有一个public类,一个源文件可以有多个非public类
源文件的名称应该和public类的类名保持一致。
import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。
除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。
Java 基本数据类型
内置数据类型
- byte数据类型是8位、有符号的,以二进制补码表示的整数;默认值是0;
- short数据类型是16位、有符号的以二进制补码表示的整数;默认值是0;
-
- int数据类型是32位、有符号的以二进制补码表示的整数;默认值是0;
- long数据类型是64位、有符号的以二进制补码表示的整数;默认值0L;
- float数据类型是单精度、32位、符合IEEE 754标准的浮点数;默认值0.0f;
- double数据类型是双精度、64位、符合IEEE 754标准的浮点数;默认值0.0d
- boolean数据类型表示一位的信息;默认值false;
- char类型是一个单一的16位Unicode字符;
- 实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。
引用类型
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
常量
- 常量指不能改变的量。 在Java中用final标志
Java 修饰符
访问修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。
默认的,也称为default,在同一包内可见,不使用任何修饰符。
私有的,以private修饰符指定,在同一类内可见。
共有的,以public修饰符指定,对所有类可见。
受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。Protected访问修饰符不能修饰类和接口,方法和成员变量能够声明为protected,但是接口的成员变量和成员方法不能声明为protected。
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。
访问控制和继承
请注意以下方法继承的规则:(父严子松)
父类中声明为public的方法在子类中也必须为public。
父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
父类中声明为private的方法,不能够被继承。
非访问修饰符
为了实现一些其他的功能,Java也提供了许多非访问修饰符。
- static修饰符,用来创建类方法和类变量。
- final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承
类重 新定义,修饰的变量为常量,是不可修改的。 - abstract修饰符,用来创建抽象类和抽象方法。抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被abstract和final修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。抽象类可以包含抽象方法和非抽象方法。
- 抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。抽象方法不能被声明成final和static。
- 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
- 如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
- synchronized和volatile修饰符,主要用于线程的编程。