美文网首页Java 之旅
初级01 - Java程序的基本结构

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

作者: 晓风残月1994 | 来源:发表于2019-07-24 00:10 被阅读0次

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

    • 计算机中操作内存最小的单位是一个字节,1 byte = 8 bit
    • Java 通过 Java virtual machine 实现跨平台桥梁
    • Java --compile--> bytecode ----> JVM ----> Linux/Win/Mac

    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 中的数据类型分为两类:

    • 原生数据类型: int、float、double
      声明的变量就是数据本身。
    • 引用数据类型(对象):各种 class、String 等。
      声明的变量只是存了地址,而地址指 向数据本身。

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

    相关文章

      网友评论

        本文标题:初级01 - Java程序的基本结构

        本文链接:https://www.haomeiwen.com/subject/bcwzkctx.html