Java 之旅

初级01 - Java程序的基本结构

2019-07-24  本文已影响0人  晓风残月1994

1. Java语言的跨平台性与字节码概述

2. Java语言的基本单元-类与包

类和文件名是相同的。一个Java的类文件只能包含一个和它同名的public 成员(类、抽象类、接口),非 public 成员可以包含多个。
默认包default package,即 src/main/java,每个 class 都处在一个 package 中,包名取决于 class 所在的目录结构。

全限定类名(FQCN-Full Qualified Class Name),由包目录名决定,在 jvm 眼中所有的类名都是 fqcn。只要是不在一个包,如果用到需要用的类,就需要import语句引进来。有时候为了防止类名冲突,需要写全(InteliJ 中使用 alt+enter 开启智能提示):

package com.github.hcsp;
import com.github.hcsp.pet1.Cat;

public class Home {
    Cat cat1;
    com.github.hcsp.pet2.Cat cat2; // 如果这里也使用 import 功能,就会类名冲突
}

maven 项目结构约定:
src ---> mian/java
---------- test/java

String类和 System是 jvm 内置的类,不需要 import java.lang.String 显示引入。

3. 方法、静态方法和静态变量

public class Main {
    public static int i; // 静态成员变量
    public static void main(String[] args) { // main 方法,也是程序入口
        add();
    }
    public static void add() { // 静态方法
        int j = 3; // 局部变量
        i = i + j;
    }
}

4. 对象、构造器和实例变量

创建的 class 假如没有声明任何构造器,编译器会自动帮助生成一个:

public class Cat {
    // 实例变量
    public String name;
    // 编译器自动生成
    public Cat() {
    }  
    // 自定义
    public Cat(String name) {
        this.name = name; // 对象的实例属性和实例方法在不引起歧义的情况下,可以不用 this
    // 因为这里形参也叫 name,所以才加以区分
    }
    // 实例方法
    public void meow() {
        System.out.println("喵~我是" + name);
    }
}

在 null 上调用方法,会报错空指针异常 java.lang.NullPointerException

5. 包、类、静态成员、静态方法、实例成员、实例方法

区分标识是有
There are four levels of access in Java:

private - only that class has access
no descriptor - that class and everything in the same package
protected - that class, same package, descendants of that class
public - everything

6. 对象和引用详解

Java 中所有对象都只是引用(地址),赋值时只是复制地址,但指向的还是同一块内存空间。所以存在 shallowCopy 和 deepCopy 的问题。

7. 方法的传值 vs 传引用(地址)

main 是 java 执行的入口,在每次调用方法时,java 都会创建全新的执行环境。
java 中的数据类型分为两类:

方法调用时无论是传值还是传引用,本质上都是一样的,都是复制,只不过一个传的就是原始数据本身,而另一个传的是对象地址。
所以严格来说,其实方法的调用都是在传值(复制变量中存的原始类型的数据,或对象地址)。

上一篇 下一篇

猜你喜欢

热点阅读