1.Java文件扩展名
.class:字节码文件,通过JVM虚拟机译码执行相关程序,java的跨平台依靠的就是JVM,不同平台有不同类型的JVM。
.java:Java源文件,存放Java源代码,一份Java源文件可能有多个类,除去内部类(匿名类),有多少个普通类就产生多少个.class文件。
2.Java数据类型
分为基本数据类型和引用类型。基本类型有8种,而引用类型有类、接口和数组。只要有用到new的实例都是对象。基本类型中float和long要在数字后加f和l。其次,java中无%ld和%lf,格式化时候不能使用。
基本数据类型 | 实例 |
int | 1 |
double | 1.0 |
float | 1.0f/F |
byte | 1 |
boolean | true |
short | 1 |
char | 'c' |
long | 1l/L |
3.Foreach循环
- 输入foreach可自动生成。
for (Integer integer : arr) { System.out.println(integer); }
4.命令行下Java的编译运行
输入javac命令进行编译,java命令进行运行相关类,javac要输入文件后缀,java只需输入类名。
5.子类和父类的继承关系
- 子类要继承父类使用extends关键字。
- 子类调用父类的构造方法使用super()方法。不管是子类手动调用父类的无参构造方法,还是手动调用父类的带参构造方法,代码必须写在子类构造方法的第一行
- 子类初始化时不会自动调用父类的带参构造方法,如果用到了父类的带参构造方法,则需要手动去调用,手动调用父类的构造方法后,子类不再自动调用父类的无参构造方法;
- 类在无参构造方法中调用有参构造方法要使用this(参数)方法来调用。
- 子类只能有一个父类。
- Object 类是所有类的父类。
- 子类拥有和父类一样方法名的方法,不能不修改参数,只修改修饰词和返回值!要修改()内参数后才能修改返回值和修饰词,此时子类的方法已是新方法。
案例:
//这是父类
class SuperClass {
//父类无参构造方法
public SuperClass(){
System.out.println("父类无参构造方法");
}
//父类带参构造方法
public SuperClass(String str){
System.out.println(str);
}
}
//这是子类
class SubClass extends SuperClass{
//子类无参构造方法
public SubClass(){
System.out.println("子类无参构造方法");
}
//子类带参构造方法
public SubClass(String str){
System.out.println(str);
}
}
//这是测试类
public class TestMain {
public static void main(String[] args) {
SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass("子类带参构造方法");
}
}
输出:
6.初始化代码块
案例:
class example{
{
System.out.println("我是非静态代码块2");
}
static{
System.out.println("我是静态代码块2");
}
}
-
非静态代码块:
执行多次,每次构造对象一次就执行一次。且先于构造器执行。
-
静态代码块:
只执行一次。
7.多态/接口
public interface GeneralStack {
public Object push(Object t); //如item为null,则不入栈直接返回null。
public Object pop(); //出栈,如为栈为空,则返回null。
public Object peek(); //获得栈顶元素,如为空,则返回null.
public boolean empty();//如为空返回true
public int size(); //返回栈中元素数量
}
使用interface关键字定义接口,具体实现类要使用implement继承该接口且覆写该接口的方法。 一个类可以继承多个接口,实现多种方法。
8.static和final
1.static
- static声明的成员变量为静态成员变量,也成为类变量。
- 类变量生命周期和类相同,在整个应用程序执行期间都有效。
- 注意静态方法不能调用非静态变量。
2.final
- 当用final修饰一个类时,表明这个类不能被继承。
- 当用final修饰一个方法时,表明这个方法不能被子类覆盖。
- 当用final修饰一个变量时,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。