基础回顾5

2023-11-16

JVM、JRE、JDK

  1. JVM表示java虚拟机,Java程序需要运行在虚拟机上,不同平台有自己的虚拟机,所以java可以实现跨平台运行;
  2. JRE表示java运行环境,包括java虚拟机和一些核心类库。(核心类库主要是java.lang包:java程序运行时不可缺少的一些系统类);
    如果需要运行一个开发好的java程序,安装JRE就可以了。
  3. JDK表示java开发工具,也包括JRE,其中包括编译工具,打包工具等。

跨平台性的原理

跨平台性:一次编译可在多个系统平台上运行
原理:java程序是通过java虚拟机在系统平台上运行的,只要该系统安装了相应的虚拟机就可以运行该程序。

java语言的特点

  1. 简单易学;
  2. 面向对象;
  3. 平台无关性(JVM);
  4. 支持多线程;
  5. 健壮性;
  6. 安全性(强类型语言、异常机制、垃圾回收);
  7. 支持网络编程并且很方便。

字节码

字节码:java源代码经过虚拟机编译后生成的.class文件。
采用字节码的好处:解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言的可移植性问题。总结起来就是高效、可移植
补充:java程序的执行过程
java源代码---->编译器---->JVM可执行的字节码文件---->JVM---->JVM中解释器---->机器可执行的二进制机码---->程序运行

java和c++的区别

  1. 都是面向对象的语言;
  2. java不提供指针来直接访问内存,程序内存更加安全;
  3. java支持单继承,c++支持多继承(但java的接口可以实现多继承);
  4. java有内存管理机制,不需要手动释放无用内存。

java编码

采用Unicode编码,为每个字符都制定了唯一的数值,所以在任何语言、平台、程序都可放心使用。

java注释

  1. 单行注释 //
  2. 多行注释 /* * /
  3. 文档注释 /** * /

补充:多行注释和文档注释不能嵌套使用

this

this是自身的一个对象,可以理解为:指向对象本身的一个指针。
用法:

  1. 普通的直接引用,指向对象本身的一个指针;
  2. 形参与成员名字重名,用this做区分;
  3. 引用本类的构造函数。

super

super是指向自己直接父类的一个指针。
用法:
4. 普通的直接引用,指向当前父类的一个指针;
5. 子类中成员变量和方法与父类中的变量和方法重名,用super做区分;
6. 引用父类的构造函数。
super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句);
this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

this和super的区别

  1. super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数;
  2. this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名);
  3. super()和this()类似,区别是,super()在子类中调用父类的构造方法,this()在本类内调用本类的构造方法;
  4. super()和this()均需放在构造方法内第一行;
  5. this和super不能同时出现在一个构造函数里面;
  6. this()和super()都指的是对象,所以,均不可以在static环境中使用;
  7. 从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

static

static的特点:
  1. 被static修饰的变量或者方法是独立于该类的任何象,不属于任何一个实例对象,而是被一个类所有的实例对象共享
  2. 在该类被第一次加载的时候,就会去加载被static修饰的部分;
  3. static变量值在类加载的时候分配空间,以后创建类对象的时候不会重新分配;
  4. 被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。
static的意义:
  1. 创建独立于具体对象的域变量或者方法。就可以在没有创建对象的情况下,也能使用属性和调用方法;
  2. 形成静态代码块以优化程序性能(static块只会在类加载的时候执行一次。因此,很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。)
static的应用场景:
  1. 修饰成员变量;
  2. 修饰成员方法;
  3. 静态代码块;
  4. 修饰类【只能修饰内部类也就是静态内部类】;
  5. 静态导包
static注意事项:
  1. 静态只能访问静态;
  2. 非静态既可以访问非静态的,也可以访问静态的。

多态的补充

多态性:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口 (实现接口并覆盖接口中同一方法)

方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)

一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基础回顾5 的相关文章

随机推荐

  • 去银行写代码是什么体验?

    最近在知乎上的一个回答火了 关于如何学习操作系统的 分享给大家 如何学会操作系统这门课程 一线互联网岗位和银行 国企还是有点区别的 这篇文章 讲详细讲一讲银行或者金融科技的相关问题 包括面试 待遇等等 虽然前阵子网传几大互联网公司都去掉了大
  • ChatGPT解决了我的出行规划焦虑

    我的五一出行规划 五一旅游季又将到来 许多人为了规划理想的行程而苦恼 需要投入相当时间来筛选各种信息 然而 现在有了Chat GPT 安排美好旅途变得异常简单 只要您告诉GPT您的日期和目的地 不到30秒就可以生成个性化的行程攻略 同时还可
  • APP兼容性测试如何测试?

    随着 APP 应用范围越来越广 用户群体越来越大 终端设备的型号也越来越多 移动终端碎片化加剧 使得 APP兼容性测试成为测试质量保障必须要考虑的环节 APP兼容性的测试主要包含系统兼容 产商ROM 兼容性 屏幕分辨率兼容 网络兼容 其他兼
  • PHP+nginx完成大文件下载处理

    最近在板子上做文件下载的处理 需求相对简单 一个下载请求过来 根据请求的数据决定给那些文件回去 于是采用了php nginx的方式来处理 尝试 nginx用来处理下载请求 拿到请求以后 调用配置好的php文件 php文件中对请求的参数做处理
  • actuator--基础--6.1--端点解析--health端点

    actuator 基础 6 1 端点解析 health端点 代码位置 https gitee com DanShenGuiZu learnDemo tree master actuator learn actuator01 1 health
  • java队列模拟_Java模拟队列

    用Java模拟队列的出队和进队 1 代码 Java 代码 package com stackANDqueue import java io DataInputStream import java io IOException 循环队列的入队
  • redis 十二. 分布式锁

    目录 一 分布式锁概述 二 redis 锁基础版示例 三 redis 锁进阶 Redlock 四 Redlock 分析 解决集群环境master宕机数据不一致锁不住的问题 锁的定时续期 watchdog源码分析 锁的可重入性分析 释放锁分析
  • ES6 for...in 和 for...of 的区别

    for in 和 for of的区别 遍历数组时 当给数组加上属性时 遍历对象时 总结 for of 是ES6新引入的特性 修复了 ES5 引入的 for in 的不足 关于两者之间的区别 下面列举了一些例子 遍历数组时 let arr 1
  • 5g手机怎么开5g网络

    确保您已经办理了5G套餐 且所处地区有5G网络信号 这样才能接收并使用到5G网络 以华为手机为例 打开 设置 移动网络 点击 启用5G 开关 状态栏上的信号图标就会出现一个5G图标 具体介绍如下 1 首先打开手机 设置 找到并点击 移动网络
  • 【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本文包括 1 标准卡尔曼滤波器 2 扩展卡
  • QT打开文件并显示文件内容

    QT打开文件并显示文件内容 功能描述 当点击一个按钮的时候 实现打开指定类型的文件 并在另一个子窗口中显示文件的内容 核心函数分析 QString QFileDialog getOpenFileName QWidget parent Q N
  • pandas、numpy对txt、xls、csv的文件读取总结

    文件读取 1 csv文件读取 import pandas as pd df1 pd read csv r data HeightWeight csv print df1 import numpy as np data np loadtxt
  • 华为OD机试 - 新员工座位(Java)

    题目描述 工位由序列F1 F2 Fn组成 Fi值为0 1或2 其中0代表空置 1代表有人 2代表障碍物 1 某一空位的友好度为左右连续老员工数之和 2 为方便新员工学习求助 优先安排友好度高的空位 给出工位序列 求所有空位中友好度的最大值
  • 详解Spring的循环依赖问题、三级缓存解决方案源码分析

    0 基础 Bean的生命周期 在Spring中 由于IOC的控制反转 创建对象不再是简单的new出来 而是交给Spring去创建 会经历一系列Bean的生命周期才创建出相应的对象 而循环依赖问题也是由Bean的生命周期过程导致的问题 因此我
  • memory order In x86 asm, ordinary loads and stores already have acquire / release semantics

    Acquire and Release Semantics Generally speaking in lock free programming there are two ways in which threads can manipu
  • 过采样对分类精度的影响有哪些

    过采样是一种在训练分类器时用来增加少数类样本数量的技术 它可以通过复制原有的少数类样本来增加样本数量 过采样可以提高分类精度 因为模型在训练中能够更好地学习少数类样本的特征 然而 过采样也可能导致过拟合 如果复制的样本数量过多 模型可能会过
  • 【华为OD机试真题】过滤组合字符串(C++&java&python)100%通过率 超详细代码注释 代码解读

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 过滤组合字符串 题目描述 数字0 1 2 3 4 5 6 7 8 9分别关联 a z 26个
  • k8s配置StatefulSet解读

    什么是StatefulSet 直接参考原博客 k8s配置StatefulSet StatefulSet和Deployment一样 可以保证集群中运行指定个数的pod 也支持横向扩展 但每个pod都是不可互换的 无论pod被怎样调度 它们的标
  • Python学习-----无序序列1.0(字典的创建、查看、添加、修改、删除/替换)

    目录 前言 字典是什么 字典的特点 1 字典的创建 1 直接创建 2 dict 函数创建 2 字典的查询 1 get 函数 2 获取字典一组内容 3 字典键值对的添加 1 直接添加 2 setdefault 函数 4 字典的修改 updat
  • 基础回顾5

    JVM JRE JDK JVM表示java虚拟机 Java程序需要运行在虚拟机上 不同平台有自己的虚拟机 所以java可以实现跨平台运行 JRE表示java运行环境 包括java虚拟机和一些核心类库 核心类库主要是java lang包 ja