前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础-面向对象(二)

Java基础-面向对象(二)

作者头像
cwl_java
发布2019-11-12 12:57:05
3670
发布2019-11-12 12:57:05
举报
文章被收录于专栏:cwl_Javacwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/102948464

局部变量和成员变量
  • 区别
    • 声明位置不同 类中 方法中
    • 作用范围不同: 当前类的方法 当前方法
    • 不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同
    • 内存存放的位置的:栈内存中 堆内存中
    • 成员变量有默认值;局部变量没有默认值
引用类型
  • Java语言中除基本类型之外的变量类型都称之为引用类型
  • Java中的对象和数组是通过引用对其操作的.
    • 引用可以理解为一种受限的指针
    • 指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,只能进 行赋值运算。
    • 引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量 值的空间或一个对象的空间)
内存分析
  • 栈:
    • 存放:局部变量
    • 先进后出,自下而上存储
    • 方法执行完毕,自动释放空间
  • 堆:
    • 存放new出来的对象
    • 需要垃圾回收器来回收
  • 方法区:
    • 存放:类的信息(代码)、 static变量、字符串常量等
构造器
  • 构造器定义: constructor 构造方法
    • 一个在创建对象时被自动调用的特殊方法。
  • 构造器作用:
    • 为对象进行初始化(成员变量)工作。
    • 构造器是一种特殊的方法:
    • 构造器的方法名必须和类名一致!
    • 构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return。
    • 通过new关键字调用!!
    • 如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则编译器不会 添加无参数构造方法!
    • 与普通方法一样,构造方法也可以重载 代码示例
代码语言:javascript
复制
package com.cwl.base.day03;

/**
 * @program: java_base
 * @description: 测试构造器
 * @author: ChenWenLong
 * @create: 2019-11-07 09:32
 **/
public class TestConstructor {

    public static void main(String[] args) {
        Point p = new Point(3.0, 4.0);
        Point origin = new Point(0.0, 0.0);
        Point  p2 = new Point();


        System.out.println(p.getDistance(origin));
    }
}

class Point {
    double x, y;

    //构造方法名称和类名必须保持一致
    public Point(double _x, double _y) {
        x = _x;
        y = _y;
    }

    Point(){
    }

    public double getDistance(Point  p) {
        return Math.sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
    }

}
this关键字
  • this的作用:
    • this表示的是当前对象本身,
    • 更准确地说,this代表当前对象的一个引用。
  • 普通方法中使用this。
    • 区分类成员属性和方法的形参.
    • 调用当前对象的其他方法(可以省略)
    • 位置:任意
  • 构造方法中使用this。
    • 使用this来调用其它构造方法
    • 位置:必须是第一条语句
  • this不能用于static方法。

代码示例

代码语言:javascript
复制
package com.cwl.base.day03;

/**
 * @program: java_base
 * @description: 测试This关键字
 * @author: ChenWenLong
 * @create: 2019-11-07 09:33
 **/
public class TestThis {

    int a, b, c;

    TestThis(int a, int b) {
        this.a = a;
        this.b = b;
    }

    TestThis(int a, int b, int c) {
        this(a,b);
        this.c = c;
    }

    void sing() {
    }

    void eat() {
        this.sing(); // 调用本类中的sing();
        System.out.println("你妈妈喊你回家吃饭!");
    }


    public static void main(String[] args) {
        TestThis hi = new TestThis(2, 3);
        hi.eat();

    }
}
static 关键字
  • 在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.
    • 它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
    • 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
    • 可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
    • static变量置于方法区中!
  • 用static声明的方法为静态方法
    • 不需要对象,就可以调用(类名.方法名)
    • 在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
    • 静态方法不能以任何方式引用this和super关键字
静态初始化块
  • 如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化块。
  • 类第一次被载入时先执行static代码块;类多次载入时,static代码块只执行一次;Static 经常用来进行static变量的初始化。
  • 是在类初始化时执行,不是在创建对象时执行。
  • 静态初始化块中不能访问非static成员。
pakage
  • 为什么需要package?
    • 为了解决类之间的重名问题。
    • 为了便于管理类:合适的类位于合适的包!
  • package怎么用?
    • 通常是类的第一句非注释性语句。
    • 包名:域名倒着写即可,再加上模块名,并与内部管理类。
JDK中的主要包
  • java.lang:包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
  • java.awt:包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用 程序的图形用户界面(GUI)。
  • java.net:包含执行与网络相关的操作的类。
  • java.io:包含能提供多种输入/输出功能的类。
  • java.util:包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
Import
  • 为什么需要import?
    • 如果不适用import,我们如果用到其他包的类时,只能这么写:java.util.Date,代码量太大,不
    • 利于编写和维护。通过import可以导入其他包下面的类,从而可以在本类中直接通过类名来调用。
  • import怎么使用?
代码语言:javascript
复制
import java.util.Date;
import java.util.*; //导入该包下所有的类。会降低编译速度,但不会降低运行速度。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 局部变量和成员变量
  • 引用类型
  • 内存分析
  • 构造器
  • this关键字
  • static 关键字
  • 静态初始化块
  • pakage
  • JDK中的主要包
  • Import
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档