Day2 | Java基础 | 2 数据类型

news2024/11/18 11:27:00

Day1 | Java基础 | 2 数据类型

  • 基础版
    • static
      • static的用法
        • static修饰内部类
        • static修饰方法
        • static修饰变量
        • static修饰代码块
      • 深入分析
      • static小结
  • 问题回答版
    • 参数传递
      • 形参和实参的区别是什么?
      • Java是值传递还是引用传递?
      • 值传递和引用传递的区别是什么?
    • final关键词
      • final作用是什么?
      • final、finally、finalize有什么不同?
    • static关键词
      • static作用是什么?
      • static和final区别是什么?

基础版

static

参考链接

static的用法

static修饰内部类

静态内部类的使用示例:

public class StaticTest {
    //static关键字修饰内部类
    public static class InnerClass{
        InnerClass(){
            System.out.println("============= 静态内部类=============");
        }
        public void InnerMethod() {
            System.out.println("============= 静态内部方法=============");
        }
    }
    public static void main(String[] args) {
        //直接通过StaticTest类名访问静态内部类InnerClass
        InnerClass inner=new StaticTest.InnerClass();
        //静态内部类可以和普通类一样使用
        inner.InnerMethod();
    }
}
/*  输出是
 * ============= 静态内部类=============
 * ============= 静态内部方法=============
 */

如果没有用static修饰InterClass,则只能new 一个外部类实例。再通过外部实例创建内部类

static修饰方法

同上,可以直接通过类名调用:

public class StaticMethod {
    public static void test() {
        System.out.println("============= 静态方法=============");
    };
    public static void main(String[] args) {
        //方式一:直接通过类名
        StaticMethod.test();
        //方式二:
        StaticMethod fdd=new StaticMethod();
        fdd.test();
    }
}
static修饰变量
  • 静态变量:被static修饰的成员变量叫做,也叫类变量,说明这个变量是属于类的,而不是属于对象。
  • 实例变量:没有被static修饰的成员变量,说明这个变量是属于某个具体的对象。

同样可以直接通过类名调用静态变量:

public class StaticVar {
    private static String name="java的架构师技术栈"public static void main(String[] args) {
        //直接通过类名
        StaticVar.name;
    }
}
static修饰代码块

静态代码块在类第一次被载入时执行。类初始化的顺序:

  • 父类静态变量
  • 父类静态代码块 static{}
  • 子类静态变量
  • 子类静态代码块
  • 父类普通变量
  • 父类普通代码块
  • 父类构造函数
  • 子类普通变量
  • 子类普通代码块
  • 子类构造函数

深入分析

在这里插入图片描述
堆区

  • 存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
  • 不存放基本类型和对象引用,只存放对象本身。
  • JVM只有一个堆区heap被所有线程共享。

方法区

  • 也叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
  • 方法区中包含的都是在整个程序中永远唯一的元素,如class、static变量。

栈区

  • 每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都放在堆区中。
  • 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
  • 栈分为三个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。

一个例子:

public class Person {
    //静态变量
    static String firstName;
    String lastName;
    public void showName(){
        System.out.println(firstName+lastName);
    }
    //静态方法
    public static void viewName(){
      System.out.println(firstName);
    }
    
    public static void main(String[] args) {
        Person p =new Person();
        Person.firstName = "张";
        p.lastName="三";
        p.showName();
        
        Person p2 =new Person();
        Person.firstName="李";
        p2.lastName="四";
        p2.showName();
    }
}
//输出。张三、李四

在这里插入图片描述

  • 从方法区调用方法。
  • 堆内存中的成员变量lastname随着对象的产生而产生,随对象的消失而消失。
  • 静态变量是所有线程共享的,所以不会消失。因此,静态变量可以直接根据类名去访问。

static小结

特点

  • static修饰的成员被所有的对象共享。
  • static由于对象存在,因为static的成员随着类的加载就已经存在。
  • static修饰的成员多了一种调用方式,可以直接被类名调用。
  • static修饰的数据是共享数据,对象中存储的是特有数据

成员变量与静态变量的区别

区别成员变量静态变量
生命周期随着对象的创建而存在,随着对象的回收而释放随着的加载而存在,随着类的消失而消失
调用方式只能被对象调用可以被对象调用,也可以用类名调用(推荐)
别名实例变量类变量
存储位置堆内存的对象中,所以也叫对象的特有数据方法区(共享数据区)的静态区,所以也叫对象的共享数据

使用的注意事项

  • 静态方法只能访问静态成员。(非静态可以访问静态,也可以访问非静态)
  • 静态方法中不能使用this或super关键字。
  • 主函数是静态的。

问题回答版


参数传递

形参和实参的区别是什么?

  • 形参:形式参数,Parameters,定义方法时使用的参数。用来接受调用者传递的参数。作用域在方法内部。
  • 实参:实际参数,Arguments,调用时传递给方法的参数。实参在传递给别的方法前需要被预先赋值(必须有确定的值)。

Java是值传递还是引用传递?

值传递。

  • 当参数是基本数据类型,传递的就是基本类型的字面量值的拷贝,会创建副本。比如原始类型(int、long、char等)、包装类型(Integer、Long、String等),实参和形参都是存储在不同的栈帧内,修改形参的栈帧数据,不会影响实参的数据。
  • 当参数是引用类型数据,传递的就是实参所引用的对象在堆中地址值的拷贝,同样也会创建副本。形参和实参指向同一个地址的时候,修改形参地址的内容,会影响到实参。当形参和实参指向不同的地址的时候,修改形参地址的内容,并不会影响到实参。

值传递和引用传递的区别是什么?

  • 值传递:调用方法时,将实际参数拷贝一份传递给方法。在方法中修改形式参数时,不会影响到实际参数。
  • 引用传递:也称地址传递。调用方法时,将实际参数的地址传递给方法。在方法中对形式参数的修改,会影响到实际参数。

final关键词

final作用是什么?

用于修饰类、方法、变量。

final 修饰意义
不能继承扩展
变量不能修改(避免意外赋值导致的编程错误)
方法不能重写

final、finally、finalize有什么不同?

  • finally:Java保证重点代码一定要被执行的一种机制。可以使用 try-finally 或try-catch-finally进行类似关闭JDBC连接、保证unlock锁等动作。

需要关闭的连接等资源,更推荐使用 Java 7 中添加的 try-with-resources 语句,因为通常 Java 平台能够更好地处理异常情况,编码量也要少很多。

  • finalize:是基础类java.lang.Object的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。finalize机制现在已经不推荐使用,并且在JDK9开始被标记为deprecated。因为无法保证finalize什么时候执行,执行的是否符合预期。使用不当会影响性能,导致程序死锁、挂起等。

下面代码会输出什么?
try {
// do something
System.exit(1);
} finally{
System.out.println(“Print from finally”);
}
上面 finally 里面的代码可不会被执行,这是一个特例。

static关键词

static作用是什么?

方便在没有创建对象的情况下进行调用。直接根据类名就可以去访问。

Java中static一般用来修饰成员变量、函数或内部类。普通类不允许声明为静态类。

static和final区别是什么?

参考链接

区别staticfinal
能否修饰类、方法、成员变量可以可以
能否修饰构造器不可以不可以
能否修饰代码块可以不可以
能否修饰局部变量不可以可以
修饰方法时能否被重写不可以不可以

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1655757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机发展史故事【6】

电脑群英谱 本世纪三、四十年代,是计算机发展史里最重大的收获季节。群英荟萃,逐鹿中原,鹿究竟死于谁手,并不是没有争议的。除了马克1 号与埃历阿克,还有一大批科学家为计算机的诞生作出过巨大的贡献,他们…

怎么做知识付费课程呢_揭秘知识付费课程系统的搭建之路

在信息爆炸的时代,知识的价值日益凸显。而知识付费,作为一种新型的学习方式,正逐渐走进大众的生活。那么,你是否想过自己也能搭建一套知识付费课程系统,分享你的智慧,实现知识的价值最大化呢?接…

2024年学浪视频怎么录屏

由于学浪最新版PC学生版客户端已经有防止录屏,而且录屏效率太慢,本文将介绍你一种高效率的工具,小浪助手.exe,它可以很轻松的将你的学浪视频下载下来 学浪下载工具我已经打包好了,有需要的自己下载一下 注意&#xf…

C++:多态-虚函数

C 中的多态性是面向对象编程中的一个重要概念,它允许在运行时选择不同的函数实现,以适应不同类型的对象。 多态的种类 编译时多态性(Compile-time Polymorphism):也称为静态多态性或早期绑定,指在编译时确…

容联云孔淼:大模型落地与全域营销中台建设

近日,由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开, 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席,并分享数智化转型实践经验。 他分享了容联云两大核心产品,“大模型应用容犀Copilot”在金融营…

SpringBoot Actuator未授权访问漏洞的解决方法

1. 介绍 Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能,帮助你了解应用程序的运行状况,以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点&#x…

嘴尚绝卤味:传承经典,缔造美食新风尚

卤味,作为中国传统美食的代表之一,历经千年的传承与发展,早已成为无数食客餐桌上的宠儿。而在这个美食盛行的时代,嘴尚绝卤味凭借其独特的口感和精湛的工艺,成为卤味市场中的佼佼者,引领着卤味文化的新潮流…

Linux(openEuler、CentOS8)常用的IP修改方式(文本配置工具nmtui+配置文件+nmcli命令)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09;---- 一、知识点 &#xff08;一&#xff09;文本配置工具nmtui(openEuler已预装) nmtui&#xff08;NetworkManager Text User Interface&#xff09;是一…

【系统架构师】-案例篇-UML用例图

1、概述 用于表示系统功能需求&#xff0c;以及应用程序与用户或者与其他应用程序之间的交互关系。 2、组成 参与者&#xff08;Actors&#xff09;&#xff1a;与系统交互的用户或其他系统。用一个人形图标表示。用例&#xff08;Use Cases&#xff09;&#xff1a;系统需要…

大家都是怎么写毕业论文的? 推荐4个AI工具

写作这件事一直让我们从小学时期就开始头痛&#xff0c;初高中时期800字的作文让我们焦头烂额&#xff0c;一篇作文里用尽了口水话&#xff0c;拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业&#xff0c;结果毕业前的最后一道坎拦住我们的是毕业论文&#xff0c;这玩意不…

c++ 入门2

五. 函数重载 函数重载&#xff1a;是函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名函数&#xff0c;这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同&#xff0c;常用来处理实现功能类似数据类型 不同的问题。 1、参数类型不同 #inc…

【ITK配准】第十一期 空间对象的模糊构建配准样例

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK配准中的空间对象的模糊构建配准样例,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 空间…

2024软件测试自动化面试题(含答案)

1.如何把自动化测试在公司中实施并推广起来的&#xff1f; 选择长期的有稳定模块的项目 项目组调研选择自动化工具并开会演示demo案例&#xff0c;我们主要是演示selenium和robot framework两种。 搭建自动化测试框架&#xff0c;在项目中逐步开展自动化。 把该项目的自动化…

【高阶数据结构(二)】初识图论

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:高阶数据结构专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; 高阶数据结构 1. 前言2. 图的基…

vector、heap数组、stack数组访问性能验证

测试目的 本次测试旨在比较不同数据结构&#xff08;vector、数组&#xff09;以及不同访问方法&#xff08;[]、at()、offset&#xff09;在性能上的差异&#xff0c;从而为开发者提供在特定情境下做出最佳选择的依据。 测试代码 测试网址:Quick C Benchmarks 使用GCC9.5 …

基于YOLO的车牌与车型识别系统

一、项目背景与意义 随着智能交通系统的快速发展&#xff0c;车辆识别技术在交通管理、安防监控、自动收费、停车管理等领域发挥着至关重要的作用。车牌识别和车型识别作为车辆识别技术的核心组成部分&#xff0c;能够有效提升交通运营效率&#xff0c;加强公共安全监控&#…

Baidu Comate智能编码助手:引领编码新时代的智能伙伴

前言 在数字化高速发展的今天&#xff0c;编程技术已成为推动创新与技术革新的核心动力。伴随着软件项目的复杂性和规模不断扩大&#xff0c;编码过程中的挑战也日益增加。为了解决这些问题以达到降本增效的目的&#xff0c;百度推出了基于文心大模型的Baidu Comate智能编码助…

语义分割——前列腺分割数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

SQL统计语句记录

1.达梦数据库 统计指定单位的12个月份的业务数据 SELECT a.DEPT_ID, b.dept_name, a.USER_NAME, count(a.dept_id) as count, sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-01 THEN 1 else 0 end) as one,sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-02 T…

【前端热门框架【vue框架】】——对组件进行更加简洁合理的处理和解释(一)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;程序员-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…