IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java中的类和对象 -> 正文阅读

[Java知识库]Java中的类和对象

Java 面向对象编程(一)类和对象

引言:Objected Oriented Programming——面向对象编程

1.什么是类,什么是对象

类:类似模板,规定了某一类事物共有的属性和行为,如生活中的人类,都有名字,年龄,走跑跳等行为,我们就可以将其包装成一个类,属性就是名字、年龄,行为或方法就有走跑跳等
对象:对象是类的实例,是由类创建出来的具体的事物,对象的属性值可以千差万别

2.类的定义

形式如下:

class 类名称 {
属性(也叫成员变量)
方法/行为(也叫成员方法)
(其他类/接口)
}
public class People {
//    属性
    String name;
    int age;
//    方法
    public static void eat(){
        System.out.println("吃饭");
    }
}

注意:

  • 源文件有且仅有一个public类,public类是主类
  • 源文件名必须与主类名相同
  • 类名的命名规格遵循大驼峰规则,即每个单词的首字母大写

3.static关键字

(1)访问修饰符".",从内存上来看就是引用数据类型访问堆空间,如 People p = new People();p.age = 10; 引用数据类型p保存的是地址,存储在栈空间中,而new出来的对象实际在堆空间上存储,static属性则保存在方法区中
在这里插入图片描述
(2)static是静态的意思,与类直接相关

  • static + 属性——类属性,该类的所有对象均共享该属性,类中的常量用static final修饰
  • static + 方法——类方法,可直接由类名调用该方法,一些工具方法常被定义为static方法,如之前常用的Array.sout()方法,就是典型的直接用
  • static + 代码块——静态代码块,static {代码},当new对象时,该段代码块最优先被执行,但只执行一次,是在类加载时被执行,如果主方法中有静态代码块,则静态代码块优于主方法执行
  • static 类——静态内部类

(3)静态方法与普通成员方法的权限访问

  • 首先static家族是可以互相访问的
  • 静态方法不可以访问成员变量/方法
  • 成员方法可以访问静态变量/方法

(4)重新梳理一下不同的存储空间

  • 栈空间: 主要是存储局部变量(如形参、方法中定义的变量),以及存储地址的引用
  • 堆空间:使用 new 创建的对象都是在堆上保存
  • 方法区:用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据. 方法编译出的的字节码就是保存在这个区域

4.代码块执行的先后顺序

(1)普通代码块:方法内再用{ 代码 }的代码块,不常见
(2)构造代码块:定义在类中,不加任何修饰符,{ 代码 },产生对象时必执行,执行顺序优于构造函数,且每产生一个对象就调用一次
(3)静态代码块,定义在类中,static { 代码块 },new对象时最优先被执行,即需要加载该类时被执行,但只加载执行一次,只要该类被加载过,就不用再加载
(4)同步代码块,多线程篇我们再分析
实战:试分析下述代码的输出顺序

class B1{
    public B1(){
        System.out.println("1");
    }
    {
        System.out.println("2");
    }
    static {
        System.out.println("3");
    }
}
public class D extends B1{
    public D(){
        System.out.println("4");
    }
    {
        System.out.println("5");
    }
    static {
        System.out.println("6");
    }

    public static void main(String[] args) {
        System.out.println("7");
        new D();
        new D();
        System.out.println("8");
    }
}

答案:
输出结果为:
3
6
7
2
1
5
4
2
1
5
4
8

答案解析:
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:51:22  更:2022-01-11 23:52:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:08:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码