Java基础知识复习(一)

复习Java基础知识(一) 文章目录2201011. “一次编写,到处运行“?2. 一个Java文件里可以有多个类吗(不含内部类)?3.说一说你对Java访问权限的了解4. 介绍一下Java的数据类型5. int数据范围6. 全局变量、局部变量7. 实例变量默认值8. 为啥有包装类9. 自动装拆箱的应用场景10. 对Integer/Double如何判断相等11. int和Integer有什么区别,二者在做==运算时会得到什么结果?12. 面向对象是?13. 它的三大特征是?14. 封装是什么?为什么要有?15. 多态是什么?2201 阅读详情

- JVM内存区域

  1. 程序计数器:一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的。
  2. Java虚拟机栈:Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的。
  3. 本地方法栈:与虚拟机栈所发挥的作用非常类似,它们的区别是,虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。
  4. 方法区: 方法区用于存储JVM加载的类信息、常量、静态变量、即使编译器编译后的代码等数据,是线程共享的。
  5. Java堆: 原则上讲,所有的对象以及数组都在堆区上分配内存,是线程之间共享的。

- 自动拆装箱

  1. 基本数据类型的自动装箱

    Integer i = 100; 

    相当于编译器自动作以下的语法编译:Integer i = Integer.valueOf(100);

    Integer的valueOf()方法的功能如下:

public static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。 如果不需要新的 Integer 实例,则通常应优先使用该方法,而不是构造方法
Integer(int),因为该方法有可能通过缓存经常请求的值而显著提高空间和时间性能。

陷阱

如果传入的int在IntegerCache.low(-128)和IntegerCache.high(127)之间,那就尝试看前面的缓存中有没有打过包的相同的值,如果有就直接返回,否则就创建一个Integer实例。IntegerCache.low 默认是-128;IntegerCache.high默认是127.

所以,当 Integer i1 = 100; Integer i2 = 100;时,i1 == i2。而当Integer i3 = 200; Integer i4 = 200; 时,i3 != i4。

最佳实践:如果要比较两个对象的内容是否相同,尽量不使用== 或者!= 来比较,可以使用equal()来实现。

    public static Integer valueOf(int i) {  
          assert IntegerCache.high >= 127;  
          if (i >= IntegerCache.low && i <= IntegerCache.high)  
              return IntegerCache.cache[i + (-IntegerCache.low)];  
          return new Integer(i);  
      }  
2. 自动拆箱
  Integer i = 10; //装箱    
        int t = i;  //拆箱,实际上执行了 int t = i.intValue();

public int intValue()以 int 类型返回该 Integer 的值。

- “==”和equals()的区别

equals() 比较的是两个对象的值(内容)是否相同。”==” 比较的是两个对象的引用(内存地址)是否相同,也用来比较两个基本数据类型的变量值是否相等。

- 异常分类

Exception 一般分为Checked(检查型)异常和Runtime(运行时)异常
1. Checked(检查型)异常

只有java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显示处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。
这体现了Java的设计哲学:没有完善错误处理的代码根本没有机会被执行
对Checked异常处理方法有两种
(1) 当前方法知道如何处理该异常,则用try…catch块来处理该异常。
(2) 当前方法不知道如何处理,则在定义该方法是声明抛出该异常。
我们比较熟悉的Checked异常有:

Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.IOException
  1. Runtime(运行时)异常

    Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
    我们比较熟悉的RumtimeException类的子类有

Java.lang.ArithmeticException
Java.lang.ArrayStoreExcetpion
Java.lang.ClassCastException
Java.lang.IndexOutOfBoundsException
Java.lang.NullPointerException

- 抽象类和接口的区别

抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

参数抽象类接口
默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现
实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器抽象类可以有构造器接口不能有构造器
与正常Java类的区别除了你不能实例化抽象类之外,它和普通Java类没有任何区别接口是完全不同的类型
访问修饰符抽象方法可以有public、protected和default这些修饰符接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法抽象类可以有main方法,并且我们可以运行它接口没有main方法,因此我们不能运行它。
多继承抽象类可以继承一个类和实现多个接口接口只可以继承一个或多个其它接口速度它比接口
速度它比接口速度要快接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
变量类型和类一样只能有 static final 类型的常量

引用:
http://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html
http://www.importnew.com/12399.html
Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)

Xilinx VU+系列多DIE FPGA时序约束与跨DIE信号优化策略 本文深入探讨了Xilinx VU+系列多DIE FPGA的时序约束与跨DIE信号优化策略。针对2.5D/3D封装技术带来的时序挑战,详细解析了SLR区域约束、Laguna寄存器配置及跨时钟域约束等关键技术,提供了实用的TCL脚本和RTL优化示例,帮助开发者有效提升设计性能和时序收敛效率。 阅读详情

相关推荐

基于h5端的视频录制和回溯功能的实现

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

发果叁 3191

Java内存区域和内存模型

写在最前 Java 内存区域和内存模型是不一样的东西。 内存区域:JVM 运行时将数据分区域存储,强调对内存空间的划分。 内存模型(Java Memory Model,简称 JMM ):定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式。 内存区域 下图是 JDK 1.8 之前的 JVM 运行时数据区域分布图: 下图是 JDK 1.8 之后的 JVM 运行时数据区域分布图: 通过 JDK 1.8 之前与 JDK 1.8 之后的 JVM 运行时数据区域

csp732171109的博客 863

【补充:脑电绘图教程 2】如何手动去除ICA伪迹分量

ICA可以将脑电信号分解为多个IC分量,由每个分量的平均功率地形图可以看出哪些分量属于伪迹,去除伪迹分量后,即可得到“干净”的脑电信号。本教程主要总结如何人工识别出ICA伪迹分量,不涉及ICA的原理讲解。本教程的主要知识来源是ICLabel官网ICLabel致力于自动识别IC分量属于哪种伪迹,并标记伪迹占比,可以在eeglabel中很方便地使用。ICLabel给出了几种常见伪迹的特点,本教程主要是根据ICLabel给出伪迹特点,对自己的数据集手动去除伪迹,以更深入了解自己数据集的质量和伪迹特点。

qq_40735196的博客 4231

Java虚拟机 JVM内存模型介绍

JVM内存模型包含:程序计数器、虚拟机栈、本地方法栈、堆和方法区。 其中程序计数器、虚拟机栈、本地方法栈是每个线程私有的,而堆和方法区是所有线程共享的区域。

qq_42699603的博客 723

彻底解决0x80070005错误代码:全面分析与实战指南

0x80070005错误代码虽然令人头疼,但通过上述方法,我们完全有能力将其攻克。从检查磁盘空间、设置账号权限,到运行疑难解答和系统文件检查器,再到调整相关服务状态,每一步都是解决这一问题的关键。希望本文能为你提供有力的帮助,让你在使用Windows系统的过程中更加顺畅无忧。

nntxthml的博客 6933

STM32入门教程:智能马桶盖控制

通过编写相应的代码,您可以根据需要实现其他功能,例如座圈温度调节和液晶显示屏显示等。初始化配置 首先,使用STM32CubeMX创建一个新的工程,并选择您所使用的STM32单片机型号。智能马桶盖是一种集成了多种功能的智能家居设备,通过控制芯片来实现自动冲水、座圈加热、座圈温度调节等功能。在本教程中,我们将使用STM32系列单片机来控制智能马桶盖的各个功能。以上代码演示了如何通过STM32的GPIO控制引脚来控制智能马桶盖的冲水和座圈加热功能。写代码 接下来,我们将通过编写代码来控制智能马桶盖的各个功能。

2401_85258012的博客 657

java笔试知识点(一)

**1.下面有关JVM内存,说法错误的是?**c a程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的 b虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的 c方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的 d原则上讲,所有的对象都在堆区上分配内存,是...

sinat_37925007的博客 277

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

yilvyangguang520的博客 3991

面试题--JVM垃圾回收及内存管理

1.以下哪些内存区域属于 JVM 规范?() A.方法区 B.实例变量 C.静态变量 D.程序计数器 E.虚拟机栈 正确答案:A D E 2 可以用于生成 JVM 进程堆快照的命令是? A.jmap B.jstack C.jstat D.jhat 正确答案:A 解析: jmap 生成打印指定 Java 进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节 jstack 生成线程快照 jstat 命令可以查看堆内存各部分的使用量,

如何心安理得的在老板眼皮下摸鱼 1167

《Claude Code 实战》第 1 章:开启智能编程新纪元——初识 Claude Code

简单来说,Claude Code 是 Anthropic 公司推出的一款基于 Claude 3.7 Sonnet 等大语言模型的强大编程工具。但与传统的 ChatGPT 或普通的聊天机器人不同,Claude Code 具备了"动手"的能力。它不仅会"说",更会"做"。想象一下,你不再需要描述复杂的命令行参数,也不需要为了修改一个配置文件而频繁切换编辑器。Claude Code 可以直接读取你项目中的文件、理解复杂的代码库结构、执行终端命令,并直接为你生成或修改代码。

AI天才研究院 245

【局部路径规划模块地图算法】基于势场地图的VFH、VFH+、VFH*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对基于地图的方法–VFH、VFH+、VFH*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1686

java基础知识复习一

java基础知识 1.& 与 &&的区别,break和continue的区别 逻辑与&,无论左边是真是假,右边都会执行 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。 逻辑或|,无论左边真假,右边都要执行。 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行 break 跳出当前循环** continue 跳出...

heart_yang的博客 396

RK3568笔记二:部署手写数字识别模型

部署手写数字识别模型,使用手写数字识别(mnist)数据集训练了一个 LENET 的五层经典网络模型。Lenet是我们的深度学习入门的必学模型,是深度学习领域中的经典卷积神经网络(CNN)架构之一。过程分为:训练,导出ONNX,转化RKNN,测试。

1170

复习java基础知识(一)

今天上午自己按照网上的教程做了一个个人博客,还是很开心的,终于有自己的博客了,所以复习java基础的就只有今天下午了。下午主要是看了很多概念性的东西,结合牛客网上的知识点,自己又整理了一下,把一些问题的答案摘抄下来(自我感觉回答好的一些答案)。以方便后来整理,学习。 1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? java虚拟机(jvm)是可以执行java字节码的虚拟进程。 准确的来说,java的跨平台指的是java源文件经过javac编译器编译成的二进制.class字节码的跨平

zzz_king的博客 261

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java基础知识复习一

复习基础 /* * switch语句格式: * switch(表达式){ * case 值1: * 语句体1: * case 值2: * 语句2: * break; * ... * default: * 语句体n+1; * break; * } * 格式解释: *...

weixin_30596735的博客 118

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java基础知识复习(一)

Java基础知识复习(一)目录Java简介命名规则八种基本的数据类型字面量类型转换变量的形态逻辑运算符位运算移位运算习题知识点 目录 Java简介 Java是由Sun公司在1995年推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。 Java分为三个体系: JavaSE JavaEE JavaME 命名规则 java中的类名,变量名,方法名都被称为标识符。 标识符命名规则: ①由字母,数字,下划线,$组成,不能以数字开头。

qq_43941925的博客 475

Java基础知识整理复习(一)

笔者最近开始学习Java后端的知识,故对之前所学的Java知识进行一个复习整理,为后续学习打下良好基础。由于写这篇文章主要是复习巩固方便自己理解,文章侧重在一些自己认为的重点和自己不足的地方,所以所涉及的知识点并不那么完善,有些描述并不那么专业,也并不深入,就是一些基本的操作,请多多包涵。文章仅供参考,谢谢。 这篇文章主要讲了关于Java很基本的操作,下篇文章Java...

思 1070

[java基础知识复习] Java基础知识总结分享一

也就是class文件,也就是java的运行程序。让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数。②:如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。

rita_0567的博客 919

Java复习总结之基础知识(一)

java面试基础知识复习

m0_67564057的博客 273

JAVA复习题(一)基础知识

添加链接描述

weixin_52358529的博客 140
上一篇: 0-1背包问题复习
下一篇: Java基础知识复习(二)
TaiSung
博客等级 码龄15年 49粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值