专栏首页琦小虾的BinaryJavaSE 基础学习之二 —— Java 的部分基本语法

JavaSE 基础学习之二 —— Java 的部分基本语法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ajianyingxiaoqinghan/article/details/80446146

接上文《JavaSE 基础学习之一 —— Java 的简介》


二. Java 的部分基本语法

注:本篇文章部分记录时,老师默认我们有较佳的编程功底,故该部分讲的不深入,所以本篇笔记整理的比较简单随意。

1. 类

  • 类的成员变量:把数据(属性)进行抽象,用变量表示;
  • 类的成员函数:把行为进行抽象,用函数(方法)表示;

类中只能有成员变量和成员函数。

2. 对象

对象就是类的具体实例。

3. 构造函数

  • 函数名和类名相同;
  • 无任何返回值类型,连 void 都没有;
  • 构造函数的主要作用是给成员变量初始化;
  • 创建对象时,构造函数会自动调用,创建一次对象,就会调用一次构造函数。
    • 如果一个类没有写构造函数,则 jvm 会给一个无参数的默认构造函数,即 public 类名 (){}
    • 一旦自己声明了构造函数,则这个无参数的默认构造函数就不存在了;

注:Java 数据变量的默认值都为 0

4. this 引用

  • this 引用是指当前对象的引用,即调用该函数的那个对象的引用;
  • 什么时候可以省略 this ?
    • 一个普通的成员函数访问一个普通的成员变量,前面都可以省略 this
  • this(args) 的函数调用:在一个构造函数中的第一句,可以去调用另一个构造函数;

5. 函数重载

  • 函数重载,即同一个类中的一组函数,函数名称相同,形参不同,与返回值类型无关。
  • 调用时,回根据参数的个数和类型自动匹配。
    • 注:匹配过程中,系统会找最精确的函数,如果找不到的话,就会寻找能够匹配上的函数;

6. 构造函数的重载

略。

7. 可变参数

  • Java 中的数组,略
  • 如果有多个参数,可变参数必须是最后一个,jvm 会将其当做数组处理;

例:

int add(int ...a) {
    int sum = 0;
    for(int i : a) sum += i;
    return sum;
}

练习: 写一个点类:

  • 行为:
    • 求一个点到圆心的距离
    • 求一个点到另外一个点的距离
  • 注:用到 Math.sqrt()

作业:

package MyPoint;

public class MyPoint {
    MyPoint(double x, double y) {
        this.x = x;
        this.y = y;
    }
    double x, y;

    double calcuRawDistance() {
        return Math.sqrt(x*x + y*y);
    }
    double calcuDistance2pt(MyPoint pt) {
        return Math.sqrt(Math.pow((this.x - pt.x), 2) + Math.pow((this.y - pt.y), 2));
    }

    public static void main(String[] args) {
        MyPoint pt1 = new MyPoint(1,2);
        MyPoint pt2 = new MyPoint(5,7);
        System.out.println("Raw Distance: " + pt2.calcuRawDistance());
        System.out.println("Distance to Point1: " + pt2.calcuDistance2pt(pt1));
    }
}

8. 定义初始化

  • 在构造函数之前执行定义初始化。每次创建对象,都会调用一次定义初始化与构造函数。

注:Java 在类中的成员定义时,无顺序关系,都是并列的。

9. 静态成员

静态成员变量

  • 静态成员变量属于类,不属于某个实例对象,所有实例对象共享同一个静态成员变量。
  • 用到类,静态成员变量就会加载,且只加载一次。
  • 静态成员变量的调用在定义初始化与构造函数之前。
  • 静态成员直接用类名访问,也可以通过对象进行访问,不过不建议。
  • 静态定义初始化

静态成员方法: 如:

public class Adder {
    // 参数的 ... : jvm 底层将其自动当做数组传入
    static int add(int...a) {
        int sum = 0;
        for(int i : a) {
            sum += i;
        }
        return sum;
    }
}
  • 一般使用类名进行访问,如上例中,调用方法为:Adder.add();
  • 也可以通过对象访问,不过不建议;
  • 静态成员方法只能访问静态成员;

练习: 写一个点类(坐标,构造函数,到圆心的距离,到另外一个点的距离) 再写一个矩形类:

  • 成员: 左上角坐标,宽度和高度(用于确定一个矩形)
  • 方法: 判断一个点在不在矩形内,计算矩形的面积和周长;

作业:

package MyPoint;

public class Rect {
    MyPoint location;
    double width, height;

    Rect(MyPoint location, double width, double height) {
        this.location = location;
        this.width = width;
        this.height = height;
    }

    Rect(double x, double y, double width, double height) {
        this(new MyPoint(x, y), width, height);
    }

    double getLength() {
        return 2 * (width + height);
    }
    double getArea() {
        return width * height;
    }
    boolean contains(MyPoint p) {
        return p.x >= location.x && p.y >= location.y 
                && (p.x - location.x) <= width && (p.y - location.y) <= height;
    }
    boolean contains(double x, double y) {
        return contains(new MyPoint(x, y));
    }
}

10. 包,访问权限

  • 包 Package - 包是类名的一部分,如 aa.Person 中,aa 即为包名;
    • import 用于导入包;
    • java.lang 包下的类不用导包,可以直接使用;
  • 访问权限
    • public - 可以修饰类,成员,可以在不同包下访问;
    • private - 用于修饰成员,只能在类的内部访问
    • 默认的 - 只能在同一包下访问;
    • protected - 在同一包下可以访问,不同包下的子类可以访问;

接下篇《JavaSE 基础学习之三 —— Java 的继承与接口》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring技术知识点总结之一——循环依赖

    在 Spring 中获取一个 Bean,是通过获取 BeanDefinition 实现的:在定义 Bean 信息的 XML 文件中,BeanDefinition...

    剑影啸清寒
  • Kafka技术知识总结之三——Kafka 高效文件存储设计

    在 Kafka 文件存储中,同一个 Topic 下有多个不同 partition,每个 partition 为一个目录。partition命名规则为Topic名...

    剑影啸清寒
  • Java 学习之路——前言

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/...

    剑影啸清寒
  • 基于 HTML5 + WebGL 的 3D 风力发电场

    风能是一种开发中的洁净能源,它取之不尽、用之不竭。当然,建风力发电场首先应考虑气象条件和社会自然条件。近年来,我国海上和陆上风电发展迅猛。海水、陆地为我们的风...

    HT for Web
  • 使用 web3D 技术的风力发电场展示

    风能是一种开发中的洁净能源,它取之不尽、用之不竭。当然,建风力发电场首先应考虑气象条件和社会自然条件。近年来,我国海上和陆上风电发展迅猛。海水、陆地为我们的风...

    HT for Web
  • 深度学习与神经科学相遇(三)译

    原文: https://zhuanlan.zhihu.com/p/23979871 深度学习与神经科学相遇(一)[译] 深度学习与神经科学相遇(二)[译] 上次...

    企鹅号小编
  • 【机器学习入门系列05】分类、概率生成模型

    本文通过将神奇宝贝数值化的过程介绍了分类模型、先验概率以及高斯分布的应用;最大似然估计的方法;推导后验概率等

    张耀琦
  • 深度学习与神经科学相遇(三)[译]

    原文: https://zhuanlan.zhihu.com/p/23979871

    用户1908973
  • mac安装虚拟环境python3

    Virtaulenvwrapper是virtualenv的扩展包,可以更方便地新增,删除,复制,切换虚拟环境。

    新人小试
  • 为什么JavaScript中的this如此强大?

    译者按: JavaScript 中的 this 让开发者犯迷糊,但是也很灵活很强大。

    Fundebug

扫码关注云+社区

领取腾讯云代金券