JAVA高级部分学习小结(2023.11.4)

简介: JAVA高级部分学习小结(2023.11.4)

一:对于static的认识

1:简单介绍:static实际上是一种修饰词语,大多数用作对于成员方法的一个静态化管理.

优点:将一个私有的变量转化为共享的数据,从而减少了代码的臃肿性,让代码看起来更加的简洁;

使用方法 :在需要进行修饰的变量类型的名称前进行修饰,如果对于成员方法进修修饰,需要在权限修饰符后面添加

2:使用特点

根据使用的对象的不同,大体可以分为两大类:

  1:对于成员变量的使用

对于成员变量进行修饰

1.能够让被修饰的成员变量变成一个在整个类当中所共享的一个东西,赋值一次所有的都会是这种的形式

2.能够变成被类名称.   比方说,在这里,类的名称是一个static01,再进行使用的时候,会提示是否使用这种变量,

而不用再新创建一个对象,使用对象来对其进行调用

3.在类被调用的时候,静态变量(也就是这里所提到的被static所修饰的成员变量)会首先加载出来,随着类的加载而加载,

直接在堆内存当中存在(相当于直接NEW了一次)

    2:对于成员方法的使用

关于成员方法的选择,我们应选择工具类型的,也就是说这个成员方法是可以对与

这个主方法进行协助的,除此之外没有其他的作用(打工人,打工魂)

上链接!

public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        student stu=new student();
        stu.name="wang";
        stu.age=18;
        //在这里,已经知道了两个人是在同一个学校的,所以这个变量是可以确定是唯一的
        //在这个条件下,可知这个变量应该被共享,所以使用static
        student.school="嵩阳高中";
        System.out.println(stu.name+"-----"+student.school+"-----"+stu.age);
 
        student stu1=new student();
        stu1.age=19;
        stu1.name="王雷阳";
        //没有对与学校进行重新输入数值,在之前已经在输入过了一次,所以可以直接全部实现
        //共享
        System.out.println(stu1.name+"----"+student.school+"----"+stu1.age);
 
        //成员方法的static的使用
       //可以直接删除这一个变量类型,减少推内存的使用程度 student stu2=new student();
        int[] num={3,2,3};
        int max = student.getMax(num);
        System.out.println(max);
        int min = student.getMin(num);
        System.out.println(min);
        //以上两种求最大跟最小值也是可以运用同样的道理,直接只用类名称进行使用
        //如果对于这个遍历的方法进行static的修饰,那么也可以直接使用类的名称
        //直接进行调用
        student.getOrder(num);
 
        //当所有的成员方法都被修饰的时候,可以对于这个类型直接进行全部的修饰
        //目的是为了防止创建一个新的对象,从而让内存的使用变小,减少内存的浪费使用
    }
}

背后代码(这里所写的代码都可以算作是一个工具性质的成员方法,仅供参考)

public class student {
    String name;
    int age;
    static String school;
 
 
    public static int getMax(int[] num){
        int max=num[0];
        for (int i = 1; i < num.length; i++) {
            if(max<num[i]){
                max=num[i];
            }
        }
        return max;
    }
 
    public static int getMin(int[] num){
        int min=num[0];
        for (int i = 1; i < num.length; i++) {
            if(min>num[i]){
                min=num[i];
            }
        }
        return min;
    }
 
    public static void getOrder(int[] num){
        System.out.print("[");
        for (int i = 0; i < num.length-1; i++) {
            System.out.print(+num[i]+", ");
        }
        System.out.println(num[num.length-1]+"]");
    }
 
}


二:继承

1.简单介绍:继承用通俗易懂的话来说就是儿子继承父亲的东西,父亲有什么东西,儿子也就会有什么,子承父业,而且可以是全部的继承

tips:需要注意的是,可以是全部的继承,是不包括在父类当中所包含的  "构造方法"  这一个是子类所不能够使用的,所以子类如果要使用构造方法需要自己再重新进行构造.而且在这里,即使是private修饰过的成员变量.子类依然是可以去继承的,只不过是自己的访问权限不够,因此不能够直接调用,但是!在堆内存当中新添加子类方法的时候,会直接在子类下创建一个相同地址的SUPER的.


优点:采用继承的方式能够让原本比较冗长的代码看起来更加的简单,从而让代码看起来更加"美观".减少内存的过分使用

2.使用特点

在继承了之后,父当中的任何成员变量,子类都可以进行使用

使用的情况,一般实在对于多个的类型之间


构造的方法

class zi extends fu{
}

注意:在使用继承的时候需要考虑使用的合理性,保证有一定的共性,

并且满足 is a的一个特点

tips(有关JAVABEAN的疑问):

那么,在这里会有一个很~~~大的疑问,哎!JAVABEAN当中,所有的成员变量不是最好都不让被人看到,也就是最好都进行私人话修饰,添加private吗?私人化之后,子类怎么再去使用?


GOOD 想的很好

在这里,解决方案其实很简单,既然成员变量被私人化,那我先在子类放置一个父类的带参构造方法,先在父类当中完成初始化,进行赋值,之后在父类当中直接创建一个GET方法,调用数据不就OK了

上链接!

manager in=new manager("王森",18);
        in.method();
 
        coder sc=new coder("孙雨生",19);
        sc.method();
    }
}
//创建父类
//需要考虑的一点是,在JAVABEAN当中,所有的成员变量都是要进行私有化的
/*
这个时候,子类不能直接调用,但是可以调用其中父类的获取方法!
 */
class empoler{
    private String name;
    private int age;
 
 
    //父类的带参构造方法
    public empoler(String name, int age) {
        this.name=name;
        this.age=age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
}
//这两个实际上都可以算作是代码当中的一部分,所以可以当作code的子类
class manager extends empoler{
    //构造方法
    public manager(String name,int age){
        //将变量值直接初始化给父类
        super(name,age);
    }
    public void method(){
        System.out.println(getAge()+"岁,叫做"+getName());
    }
 
 
}
 
class coder extends empoler{
 
    public coder(String name, int age) {
        super(name, age);
    }
    public void method(){
        System.out.println(super.getAge()+"岁,叫做"+super.getName());
    }
}

3.关于THIS跟SUPER

       1.this.通常适用于同一个类型当中,在一个构造方法当中,出现了一个与在同一个类当中的一个成员变量相同,如果要使用成员变量,那么就要使用this来进行使用,比较常见的使用方式有

class people{
    int name;
//使用构造方法的时候
    public  method(String name){
    this.name=name;    
}
}

      2.super.通常是使用在了继承的关系当中的,如果在子类当中有跟父类一样的变量名称,那么就可以使用super来直接调用父类当中的变量,如果不这样,那么就会遵循就近的原则,调用最近的成员方法以及相应的成员变量!(在tips的链接中有详细的情况,可以反复观看);

4.有关子类与父类的权限关系;

子类的关系跟父类的关系,在权限上,必须是子类>=父类,否则是不能够使用父类的

关于权限修饰符大小排序

private<(default)(默认值)<protected<public
 


三:final

1.简单介绍:final是一个JAVA当中的关键词,主要起到了固定具体类型数值的作用,自然也可以是一个成员方法

2.使用特点

根据使用场景的不同,大体分为三大类

1.成员变量:

凡是被FINAL所修饰的成员变量都必修要进行赋值,可以直接进行赋值,也可以在构造方法当中进行一个赋值,但是默认值是不可以的,在这里面默认值是一个无效值!

修饰过后,这个变量也就无法进行修改,只进行一次初始化就变成了一个常量(可以这样理解,但不是一个常量)

2.成员方法:

在这里,final也是可以对成员方法进行修饰的,一旦被修饰,比如说在继承关系当中,父类中的某个方法一旦被修饰,那么子类是不能够再调用父类的这个方法了

3.类

如果使用FINAL直接对类进行修饰,那么这个类将不能够作为一个父类存在,只能够成为一个子类!相当于一个太监,没有了孩子,但是仍然可以有父亲,可以当作一个子类来进行再次的使用

相关文章
|
18天前
|
Java 数据库 数据安全/隐私保护
银行流水生成器在线制作,银行转账p图在线生成,java实现最牛的生成器【仅供学习用途】
本资料探讨银行系统核心技术,涵盖交易记录生成、电子回单加密验真及基于Java的财务管理系统开发。主要内容包括:交易记录实体类设计(不可变性与数字签名)
|
18天前
|
数据采集 搜索推荐 算法
Java 大视界 -- Java 大数据在智能教育学习社区用户互动分析与社区活跃度提升中的应用(274)
本文系统阐述 Java 大数据技术在智能教育学习社区中的深度应用,涵盖数据采集架构、核心分析算法、活跃度提升策略及前沿技术探索,为教育数字化转型提供完整技术解决方案。
|
15天前
|
Oracle Java 关系型数据库
java 入门学习视频_2025 最新 java 入门零基础学习视频教程
《Java 21 入门实操指南(2025年版)》提供了Java最新特性的开发指导。首先介绍了JDK 21和IntelliJ IDEA 2025.1的环境配置,包括环境变量设置和预览功能启用。重点讲解了Java 21三大核心特性:虚拟线程简化高并发编程,Record模式优化数据解构,字符串模板提升字符串拼接可读性。最后通过图书管理系统案例,展示如何运用Record定义实体类、使用Stream API进行数据操作,以及结合字符串模板实现控制台交互。该指南完整呈现了从环境搭建到实际项目开发的Java 21全流程实
42 1
|
18天前
|
算法 Java 测试技术
Java 从入门到实战完整学习路径与项目实战指南
本文详细介绍了“Java从入门到实战”的学习路径与应用实例,涵盖基础、进阶、框架工具及项目实战四个阶段。内容包括环境搭建、语法基础、面向对象编程,数据结构与算法、多线程并发、JVM原理,以及Spring框架等核心技术。通过学生管理系统、文件下载器和博客系统等实例,帮助读者将理论应用于实践。最后,提供全链路电商系统的开发方案,涉及前后端技术栈与分布式架构。附代码资源链接,助力成为合格的Java开发者。
47 4
|
18天前
|
Java
银行转账p图软件,对公转账截图生成器,java版开发银行模拟器【仅供学习参考】
这是一套简单的银行账户管理系统代码,包含`BankAccount`和`BankSystem`两个核心类。`BankAccount`负责单个账户的管理
|
18天前
|
存储 Java 数据库
银行流水生成器在线制作,银行转账p图在线生成,java实现最牛的生成器【仅供学习用途】
本示例展示了一个基于Java的银行交易记录管理系统基础架构,涵盖交易记录生成、数字签名加密及账本存储功能。核心内容包括:1) TransactionRecord类
|
26天前
|
存储 安全 Java
Java 基础知识超详细整理总结及学习要点解析
本文全面总结了Java基础知识,涵盖语言特性、语法基础、面向对象编程、集合框架、异常处理等核心内容。文章详细解析了Java的面向对象特性(如类与对象、构造方法、方法重载)、集合框架(如ArrayList、HashMap)、异常分类及处理,并深入探讨JVM内存模型、字符串比较、BigDecimal使用等重要知识点。此外,还提供了实际应用示例,帮助开发者更好地理解和掌握Java编程。代码资源可从文末链接获取。
153 4
|
29天前
|
Java 数据挖掘 调度
Java 多线程创建零基础入门新手指南:从零开始全面学习多线程创建方法
本文从零基础角度出发,深入浅出地讲解Java多线程的创建方式。内容涵盖继承`Thread`类、实现`Runnable`接口、使用`Callable`和`Future`接口以及线程池的创建与管理等核心知识点。通过代码示例与应用场景分析,帮助读者理解每种方式的特点及适用场景,理论结合实践,轻松掌握Java多线程编程 essentials。
81 5
|
1月前
|
Cloud Native Java 程序员
【2025 最新版互联网一线大厂 Java 程序员面试 + 学习指南】覆盖全面面试知识点、实用面试技巧及前沿技术实操内容
本内容涵盖互联网大厂主流技术栈的最新实操指南,包括微服务架构(Spring Cloud Alibaba Nacos、OpenFeign、Spring Cloud Gateway)、容器化与Kubernetes、云原生技术(Istio、Prometheus+Grafana)、高性能开发(Reactor响应式编程、CompletableFuture异步编程)及数据持久化(Redis分布式锁、ShardingSphere分库分表)。通过详细代码示例和操作步骤,帮助开发者掌握核心技术,适用于本地环境搭建与模块功能实践。适合Java程序员学习和面试准备,附带资源链接供深入研究。
54 5
|
1月前
|
缓存 算法 Java
【Java 程序员面试 + 学习指南】覆盖互联网一线大厂 Java 程序员所需面试知识点与技巧
本指南专为Java程序员准备互联网大厂面试而设,涵盖面试知识点与技巧两大部分。知识点包括Java基础(面向对象、集合框架、并发编程)、JVM(内存分区、回收机制、类加载机制)、数据库(MySQL、Redis)、开发框架(Spring、Spring Boot、MyBatis)及其他相关技术(计算机网络、操作系统)。面试技巧涉及简历撰写、项目经验阐述及答题策略,助你全面提升面试成功率。提供资源链接,支持深入学习。
46 4

热门文章

最新文章