当前位置: 首页 > news >正文

Java基础知识总结(上)

Java基础知识总结

1. Java语言的特点

  1. 简单易学,相较于python等语言具有较好的严谨性以及报错机制;

  2. 面向对象(封装,继承,多态),Java中所有内容都是基于类进行扩展的,由类创建的实体称为对象,并且对象之间存在不同的关系,由此发展出了继承、多态等语言特性;

  3. 平台无关性( Java 虚拟机实现平台无关性),Java语言通过JVM运行字节码文件的方式解决了平台间迁移代码的问题。Java分为编译与运行两部分,编译时只将Java代码转化为.class字节码的过程(其他语言例如在安卓平台推广的Kotlin等,通过自己的编译器同样可以编译为字节码文件,满足JVM运行字节码文件的格式要求即可),然后JVM只需要运行字节码文件即可。但是在不同平台上运行的JVM是需要重新编写和编译的,但是这个步骤已经由oracle公司帮你完成了(当然也可以自己下载源码然后自己编译,并且可以修改JVM的内容,设计成你自己满意的虚拟机)

  4. 支持多线程( C++ 语言早期没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);

  5. 可靠性、安全性,Java语言提供了GC-垃圾收集器,极大的便利了程序员不必设计类似于cpp中的析构函数以及对象的释放了;

  6. 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);

  7. 编译与解释并存(java->.class是编译,.class->运行是解释),虚拟机在运行代码时首先由类加载器加载字节码文件(生成了Class对象),然后通过解释器一步步执行,虽然在字节码中已经比较偏向与底层了,但是由解释器转化为机器码仍然消耗时间,所以在执行效率上相较于cpp、go等还是稍显逊色。

2. JVM、JDK、JRE三者的关系

  • JVM就是Java虚拟机,是运行字节码文件的虚拟机。但是虚拟机并不是只有一种,常用的是HotSpot(oracle的)还有J9、JRockit等都是其他公司设置的,不同的虚拟机中使用的垃圾收集器-GC的逻辑、内存模型等都有区别,我们在平时使用时使用oracle提供的就可以(最常用的)。
  • JRE - Java Runtime Environment,Java运行时环境,其中包含了JVM、Java类库、java命令和一些基础组件,可以直接运行字节码文件,但是不能对Java代码进行编译。
  • JDK - Java Development Kit,包含了JRE以及javac等命令,可以进行Java文件等编译等。

3. 注释

Java中存在三种注释:单行注释、多行注释、文档注释

  • 单行注释采用//的方式进行,在本行中的所有内容在编译时都将忽略
  • 多行注释采用/* 内容 */的方式进行,在中间的部分都认为是注释,通常用于注释多行代码
  • 文档注释采用/** 内容 */的方式,一般在类上、方法上使用,其中可以html语法,并且在生成Java开发文档时将自动将注释部分作为文档中的内容

在开发过程中多写注释是一个好习惯,当代码量非常巨大的时候,往往注释可以很方便的告知使用者类、方法的具体含义,以此减少沟通成本、提高系统的开发效率

4. 标识符 和 关键字

标识符就是在Java程序中设置的各种类、方法、变量等的名字,同时还有一些标识符例如if、for等是Java已经赋予了特殊含义的标识符称为关键字。各种关键字有哪些可以在官网上查看:官网

5. 自增自减运算符(++、–)

自增、自减运算符可以用于整型数据以及浮点数据上,其中也包括char类型。

++ 位于变量名之前,则优先运算++的值,并将结果用于外部等式的运算。

若位于变量名之后,则优先进行外部等式的运算,在计算完成后变量再进行加减计算。

6. 位移运算符

位移运算法有>>> 、>><< 三种,操作都是针对二进制数,同时只对整型类型有效。

移位操作符实际上支持的类型只有intlong,编译器在对shortbytechar类型进行移位前,都会将其转换为int类型再操作

对于int类型当唯一次数大于32次时会首先对位移数向32求余,类似于a >>> 33等价于a >>> 1,对于long类型是向64求余。

7. continue、break、return的区别

三者的作用效果是不同的,continue是跳出本次循环,若循环没有满足结束条件则会继续下次循环,break是直接跳出循环,return是直接跳出方法,当return所在的方法返回值类型不为void时需要返回一个值。

8. 成员变量与局部变量

成员变量属于类,可以使用static、final关键词进行修饰,使用static关键字修饰是变量存在于方法区,当没有采用static关键字进行修饰时,变量随对象的创建一同创建,对象存在于堆内,所以变量也存在于堆内。成员变量会由虚拟机进行一次初始化为默认值的过程,因此可以不进行初始化也能使用。

局部变量属于方法,可以使用final进行修饰,局部变量在方法被调用时创建,同时局部变量也需要初始化后使用,因为调用方法并不会对局部变量进行默认的初始化。

9. 静态变量 与 常量

静态变量值的是可以直接通过类进行访问的变量,与对象无关。

当变量没有使用final进行修饰时,变量的值是可以改变的,可以通过类也可以通过对象。当使用final进行修饰后,该变量就被称为常量,因为这个变量是一个不会变化的变量,并且通过类就可以直接访问得到。

10. 静态方法

静态方法中不可以使用非静态成员,因为静态成员在调用的时候可能还有类的对象被创建,但是非静态成员变量又存储在对象实例中,一个已经存在并且被调用的方法,是无法访问一个还没有被创造出来的对象的。

11. 重载 与 重写

方法重写指得是将继承自父类的方向重新进行实现,而重载指的是同一个方法根据形参的不同设置不同的实现。

12. 可变长参数

可变长参数指的是调用方法时可以传入多个参数(参数的数量是不固定的)

并且一个方法只能有一个可变长参数,并且可变长参数必须是所有参数中的最后一点,可变长参数前面的参数在调用时不可省略。

若遇到方法重载时,其中一种使用了可变长参数,两个方法同时满足调用要求时,在运行时实际调用的应该是哪个方法呢? – 答案是 优先调用不含邮可变长参数的方法。

13. 包装类

包装类是基本数据类型封装得到的引用类型对象,可以在范型中使用,同时每种包装类型都对一定范围中的数据进行了封装例如Integer封装了-128,127。

虽然进行缓存封装,但是直接采用new关键字创建对象时还是会重写去创建一个新的对象,并不会直接使用缓存中的,若想使用缓存中的可以使用valueOf方法。

同时引用类型若存在对象比较是否相同时,一定要采用equals方法。

14. 自动拆箱、装箱

自动拆箱会在需要使用基本类型的地方自动将封装类的对象转化为基本类型,而在需要使用封装类的地方自动进行装箱。

浮点值存在精度问题,因为在计算机中存储的是二进制,无法表示无限不得小数位的,若想避免这种问题可以使用BigDecimal和BigInteget。

相关文章:

Java基础知识总结(上)

Java基础知识总结 1. Java语言的特点 简单易学&#xff0c;相较于python等语言具有较好的严谨性以及报错机制&#xff1b; 面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff0c;Java中所有内容都是基于类进行扩展的&#xff0c;由类创建的实体…...

MySQL 2:MySQL约束

一、定义 约束&#xff08;constraint&#xff09;&#xff0c;即表中数据的限制条件。在表设计中加入约束的目的是保证表中记录的完整性和有效性。 比如user表&#xff0c;有些列&#xff08;手机号&#xff09;的值不能为空&#xff0c;有些列&#xff08;身份证号&#xff…...

C4--Vivado添加列表中不存在的FLash器件2023-02-10

以华邦SPI FLASH W25Q128JVEIQ为例进行说明。&#xff08;其他Flash添加步骤一致&#xff09; 1.本地vivado安装目录D:\Softwares\xlinx_tools\Vivado\2020.2\data\xicom下&#xff0c;找到xicom_cfgmem_part_table.csv文件&#xff0c;这个表与vivado hardware manager中的器…...

php代码审计

准备工作 了解CMS的基本信息 该CMS使用的是什么设计模式&#xff1f;该CMS每个目录大概负责的功能(视图、缓存、控制器等)。该CMS处理请求的基本流程是如何走的&#xff1f;以及在系统中使用的全局过滤函数是如何对数据进行处理的&#xff1f; 代码审计方法 敏感函数回溯 …...

接口测试入门,如何划分接口文档

1.首先最主要的就是要分析接口测试文档&#xff0c;每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定&#xff0c;里面缺少的内容自己需要与开发进行确认。 我认为一针对于测试而言的主要的接口测试文档应该包含的内容分为以下几个方面。 a.具体的一个业…...

数据库学习第二天

第7章 系统预定义函数 函数&#xff1a;代表一个独立的可复用的功能。 和Java中的方法有所不同&#xff0c;不同点在于&#xff1a;MySQL中的函数必须有返回值&#xff0c;参数可以有可以没有。 MySQL中函数分为&#xff1a; &#xff08;1&#xff09;系统预定义函数&…...

NODE => CORS跨域资源共享学习

1.CORS跨域资源共享 cors是Express的一个第三方中间件。通过安装和配置cors中间件&#xff0c;可以很方便地解决跨域问题 运行npm install cors 安装中间件使用const cors require(‘cors’) 导入中间件在路由之前调用 app.use&#xff08;cors&#xff08;&#xff09;&#…...

golang rabbitMQ 生产者复用channel以及生产者组分发策略

引用的是rabbitMQ官方示例的库&#xff1a;github.com/rabbitmq/amqp091-go在网络编程中我们知道tcp连接的创建、交互、销毁等相关操作的"代价"都是很高的&#xff0c;所以就要去实现如何复用这些连接&#xff0c;并要做到高效并可靠。预期效果&#xff1a;项目初始化…...

掌握了这项技能的性能测试师,90%都升职加薪了

初入职场的新人该怎么做才能让自己快速成长&#xff1f;在公司一直做着手工测试&#xff0c;如何才能提升自己&#xff0c;避免陷入“只涨年龄不涨经验”的尴尬&#xff1f;做为一名软件测试工程师&#xff0c;我们不得不去面对这些问题&#xff0c;有的人找到了答案&#xff0…...

linux中crontab定时任务导致磁盘满和云监控未报警的的坑

一个后台开发者&#xff0c;兼职运维工作中&#xff0c;配置linux中crontab定时任务&#xff0c;导致磁盘满和云监控未报警的问题的坑。 1.磁盘满 使用命令 df -h2.问题排查 2.1排查日志 命令 cat /var/log/messages日志文件的默认路径是&#xff1a;/var/log 下面是几个…...

vscode中安装python运行调试环境

在运行代码之前&#xff0c;需要到微软商店下载安装python环境&#xff0c;35m&#xff0c;都是自动的。 1、安装python 的extensions插件。 ctrlshiftx 输入 python 后点击 install 按钮。 2、新建文件夹spider文件夹。 3、在新建文件夹spider下新建文件spider.py源代码。…...

【微服务】微服务架构超强讲解,通俗易懂

微服务架构目录一、微服务架构介绍二、出现和发展三、传统开发模式和微服务的区别四、微服务的具体特征五、面向服务的架构SOA&#xff08;service oriented architecture&#xff09;和微服务的区别1、SOA喜欢重用&#xff0c;微服务喜欢重写2、SOA喜欢水平服务&#xff0c;微…...

内核中的竞态产生的原因和解决方法

产生原因&#xff1a; 由于多进程对临界资源的抢占 根本原因&#xff1a; 1、对于单核处理器而言&#xff0c;内核支持抢占就会出现竞态 2、对于多核处理器而言&#xff0c;是核与核的竞态 3、进程与中断间存在竞态 4、arm开发板不会出现中断与中断间的竞态&#xff08;目前&am…...

【微服务】Elasticsearch文档索引库操作(二)

&#x1f697;Es学习第二站~ &#x1f6a9;Es学习起始站&#xff1a;【微服务】Elasticsearch概述&环境搭建(一) &#x1f6a9;本文已收录至专栏&#xff1a;微服务探索之旅 &#x1f44d;希望您能有所收获 一.索引库操作 索引库就类似数据库表&#xff0c;mapping映射就类…...

【论文速递】NAACL2022-DEGREE: 一种基于生成的数据高效事件抽取模型

【论文速递】NAACL2022-DEGREE: 一种基于生成的数据高效事件抽取模型 【论文原文】&#xff1a;DEGREE A Data-Efficient Generation-Based Event Extraction Mode 【作者信息】&#xff1a;I-Hung Hsu &#xff0c; Kuan-Hao Huang&#xff0c; Elizabeth Boschee &#xff…...

C++类和对象(下)

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 I do not believe in taking the right decision. I take a decision and make it right. 我不相信什么正确的决定。我都是先做决定&#xff0c;然后把…...

Java常见的六种线程池、线程池-四种拒绝策略总结

点个关注&#xff0c;必回关 一、线程池的四种拒绝策略&#xff1a; CallerRunsPolicy - 当触发拒绝策略&#xff0c;只要线程池没有关闭的话&#xff0c;则使用调用线程直接运行任务。 一般并发比较小&#xff0c;性能要求不高&#xff0c;不允许失败。 但是&#xff0c;由于…...

Node=>Express中间件分类 学习4

1.中间件分类 应用级别的中间件路由级别的中间件错误级别的中间件Express 内置的中间件第三方的中间件 通过app.use&#xff08;&#xff09;或app.get&#xff08;&#xff09;或app.post&#xff08;&#xff09;绑定到app实力上的中间件&#xff0c;叫做应用级别的中间件 …...

在阿里当外包,是一种什么工作体验?

上周和在阿里做外包的朋友一起吃饭&#xff0c;朋友吃着吃着&#xff0c;就开启了吐槽模式。 他一边喝酒一边说&#xff0c;自己现在做着这份工作&#xff0c;实在看不到前途。 看他状态不佳&#xff0c;问了才知道&#xff0c;是手上的项目太磨人。 他们现在做的项目&#…...

Vue3快速入门【二】

Vue3快速入门一、传值父传子&#xff0c;子传父v-model二、插槽2.1、匿名插槽2.2、具名插槽2.3、插槽作用域2.4、插槽作用域案例2.4.1、初始布局2.4.2、插槽使用2.4.3、点击编辑按钮获取本行数据&#xff08;插槽作用域的使用&#xff09;2.4.4、类型书写优化2.4.5、全局接口抽…...

5分钟掌握RePKG:Wallpaper Engine资源提取与格式转换的终极秘籍

5分钟掌握RePKG&#xff1a;Wallpaper Engine资源提取与格式转换的终极秘籍 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经面对Wallpaper Engine中的PKG资源包感到无从下…...

滑动窗口(数组)

作用滑动窗口&#xff1a;求连续满足条件的最短子数组代码模板int left 0; int right;//外层循环扩展右边界&#xff0c;内层循环扩展左边界 for (right 0; right < n; right) {//获取当前考虑的元素while (left < right && check()) {//区间[left,right]不符合…...

Claude code热门快捷指令清单

文章目录1、Claude code 热门快捷指令1.1、上下文控制类1.2、回退与实验类1.3、质量审查类1.4、模型与成本控制类1.5、自动化与远程协作类1.6、官方热门指令清单1、Claude code 热门快捷指令 Claude code热门快捷指令清单。分为上下文控制、回退与实验、质量审查、模型与成本控…...

使用TaotokenCLI工具一键配置多开发环境与团队密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用TaotokenCLI工具一键配置多开发环境与团队密钥 基础教程类&#xff0c;本文指导开发者如何通过npx或全局安装TaotokenCLI工具&…...

数据库安全与合规:保护你的数据资产

数据库安全与合规&#xff1a;保护你的数据资产 引言 数据库是企业的核心数据资产&#xff0c;数据库安全不仅关系到业务的正常运行&#xff0c;更关系到用户隐私和企业声誉。本文将从访问控制、数据加密、审计日志、备份恢复等多个维度&#xff0c;全面探讨数据库安全与合规的…...

【雕爷学编程】Arduino动手做(1)---干簧管传感器模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和各种模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做小实验,不管能否成功,都会记录下来—小小的进步或是搞不掂…...

Thermal Clad金属基板设计与成本优化实战指南

1. 电路设计基础与Thermal Clad特性解析在电子工程领域&#xff0c;电路板设计直接决定了最终产品的性能、可靠性和成本。作为一名有十年硬件设计经验的工程师&#xff0c;我深刻体会到优秀的设计需要在电气性能、热管理和机械强度之间取得平衡。Thermal Clad&#xff08;热覆金…...

别再裸奔了!手把手教你给Nacos 2.x加上用户密码和权限隔离(附Spring Boot配置)

Nacos 2.x安全加固实战&#xff1a;从零构建企业级权限体系 在微服务架构快速迭代的初期&#xff0c;许多团队为了开发效率往往选择"裸奔"模式运行Nacos——不开启任何鉴权机制。这种看似便捷的做法实则暗藏巨大风险&#xff1a;配置信息泄露、服务被恶意注销、敏感数…...

本地视频怎么去水印?2026实测去水印方法汇总,本地视频去水印软件推荐

本地视频怎么去水印&#xff1f;2026实测去水印方法汇总&#xff0c;本地视频去水印软件推荐 视频里的水印是很多人在整理或剪辑素材时遇到的高频问题。有时是平台在视频上自动打上的 Logo&#xff0c;有时是录屏工具留下的品牌标识&#xff0c;还有时是拍摄 App 在画面角落打的…...

DownKyi终极指南:快速掌握B站视频批量下载与8K超高清获取技巧

DownKyi终极指南&#xff1a;快速掌握B站视频批量下载与8K超高清获取技巧 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等…...