当前位置: 首页 > 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、全局接口抽…...

C++-类和对象(上)

类和对象&#xff08;上&#xff09;一&#xff0c;构造函数1&#xff0c;概念2&#xff0c;特性二&#xff0c;析构函数1&#xff0c;概念2&#xff0c;特性三&#xff0c;拷贝构造1&#xff0c;概念2&#xff0c;特性四&#xff0c;运算符重载1&#xff0c;概念2&#xff0c;…...

CAPL(vTESTStudio) - DoIP - TCP接收_04

TCP接收 函数介绍 TcpOpen函数...

联合培养博士经历对于国内就业有优势吗?

2023年国家留学基金委&#xff08;CSC&#xff09;申请在即&#xff0c;很多在读博士在关心申报的同时&#xff0c;也对联培经历能否有助于国内就业心中存疑&#xff0c;故此知识人网小编重点解答此问题。之前&#xff0c;我们在“CSC联合培养-国内在读博士出国的绝佳选择”一文…...

测试左移之需求质量

测试左移的由来 缺陷的修复成本逐步升高 下面是质量领域司空见惯的一张图&#xff0c;看图说话&#xff0c;容易得出&#xff1a;大部分缺陷都是早期引入的&#xff0c;同时大部分缺陷都是中晚期发现的&#xff0c;而缺陷发现的越晚&#xff0c;其修复成本就越高。因此&#…...

【数据结构初阶】第三节.顺序表详讲

文章目录 前言 一、顺序表的概念 二、顺序表功能接口概览 三、顺序表基本功能的实现 四、四大功能 1、增加数据 1.1 头插法&#xff1a; 1.2 尾插法 1.3 指定下标插入 2、删除数据 2.1 头删 2.2 尾删 2.3 指定下标删除 2.4 删除首次出现的指定元素 3、查找数据…...

新手小白适合做跨境电商吗?

今天的跨境电商已经逐渐成熟&#xff0c;靠运气赚钱的时代早已过去&#xff0c;馅饼不可能从天上掉下来&#xff0c;尤其是你想做一个没有货源的小白劝你醒醒。做跨境电商真的不容易&#xff0c;要想做&#xff0c;首先要分析自己是否适合做。米贸搜整理了以下资料&#xff0c;…...

Python搭建自己[IP代理池]

IP代理是什么&#xff1a;ip就是访问网页数据服务器位置信息&#xff0c;每一个主机或者网络都有一个自己IP信息为什么要使用代理ip&#xff1a;因为在向互联网发送请求中&#xff0c;网页端会识别客户端是真实用户还是爬虫程序&#xff0c;在今天以互联网为主导的世界中&#…...

pandas——plot()方法可视化

pandas——plot()方法可视化 作者&#xff1a;AOAIYI 创作不易&#xff0c;如果觉得文章不错或能帮助到你学习&#xff0c;记得点赞收藏评论哦 在此&#xff0c;感谢你的阅读 文章目录pandas——plot()方法可视化一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤…...

【Three.js基础】坐标轴辅助器、requestAnimationFrame处理动画、Clock时钟、resize页面尺寸(二)

&#x1f431; 个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域新星创作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4ab;系列专栏&#xff1a;vue3从入门…...

C++之完美转发、移动语义(forward、move函数)

完美转发1. 在函数模板中&#xff0c;可以将自己的参数“完美”地转发给其它函数。所谓完美&#xff0c;即不仅能准确地转发参数的值&#xff0c;还能保证被转发参数的左、右值属性不变。2. C11标准引入了右值引用和移动语义&#xff0c;所以&#xff0c;能否实现完美转发&…...

中扶建设网站/网页优化包括什么

很多SVN版本库在提交代码的时候要求添加注释信息&#xff0c;而且还有最短长度的限制。这是如何实现的&#xff1f;这个话题就涉及到了svn的Hooks功能的使用。 本文欢迎自由转载&#xff0c;但请标明出处和本文链接&#xff0c;并保持本文的完整性。 CU: Godbach &#xff0…...

网站流量增加/广告营销留电话网站

多线程之间共享数据的方式探讨 方式一&#xff1a;代码一致 如果每个线程执行的代码相同&#xff0c;可以用一个 Runnable 对象&#xff0c;这个 Runnable 对象中存放那个共享数据&#xff08;卖票系统可以这样做&#xff09;。 public class MultiThreadShareData {public s…...

网站建设个人主要事迹/百度站长工具怎么查排名

1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 题目描述 传送门 题解 SPFA一下就好了&#xff0c;dst[f][x][y]dst[f][x][y]表示在(x,y)(x,y)这个位置方向为f的最优解。 代码如下 #include<queue> #include<cstdio> #include<cstring> #include<iostr…...

汕头网页网站制作/百度com打开

【先楫HPM6750系列】PWM驱动蜂鸣器发声 本篇将介绍如何使用HPM6750输出PWM信号&#xff0c;并使用PWM信号驱动蜂鸣器发声。 PWM简介 PWM 的全称是 脉冲宽度调制 &#xff08; Pulse-width modulation &#xff09;&#xff0c;常用于模拟设备的控制&#xff0c;例如驱动舵机…...

上饶建设网站/合肥seo代理商

深究之前先声明一个问题, layui是基于jquery直接操控dom的 而vue是操控虚拟dom的,虚拟dom不理解的可以参考一下这篇文章 深究vue核心之虚拟DOM(vdom) 深究Javascript的加载与执行顺序 希望看到此篇博文的人先去看一下这两篇文章,以便你理解我在说什么. 直接写大坑描述. 最近写…...

上海外贸展/山东公司网站推广优化

之前曾和51CTO的官方人员沟通过&#xff0c;建议在社区全面逐步开始试用markdown来支持博客和论坛等的发布。他们曾承诺会考虑实施。markdown做一种标记语言的应用场景越来越广泛&#xff0c;如今也不是什么新鲜事物了&#xff0c;如果还有一些人不是很熟悉的话&#xff0c;那么…...