Java基础--->基础部分(1)

news2024/11/18 10:50:42

文章目录

  • Java语言特点
  • JVM、JRE和JDK的关系
  • 什么是字节码?采用字节码的好处是什么?
  • 面向对象
  • 面向对象的三大特征:封装,继承,多态
  • 关键字
  • 抽象类和接口特点和区别
  • ==和equals的区别
  • String、StringBuffer、StringBuilder
  • 异常

Java语言特点

Java是sun公司在1995年提出一门高级编程语言,Java之父是詹姆斯高斯林,Java语言特点:简单易学,可靠安全,跨平台性(通过Java编写的应用程序在不同的系统平台都可以运行,在Java应用程序的操作系统上安装一个JVM(Java虚拟机)即可),面向对象。

在这里插入图片描述

JVM、JRE和JDK的关系

​ JDK中包含JRE和Java开发工具(编译工具、打包工具),JRE是Java运行环境,其中包含JVM和Java核心类库

在这里插入图片描述

什么是字节码?采用字节码的好处是什么?

​ 在Java中,JVM可以解释的代码就叫字节码(.class文件),他不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以, Java 程序运行时相对来说还是高效的(不过,和 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。

​ java程序从源代码到运行过程如下:

.java—>javac编译—>.class—>解释器&JIT—>机器可理解的代码—>电脑执行

.class到机械码这一步中,JVM类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度相对比较慢。

面向对象

​ 面向对象即OOP是一种编程思想,对象在我们生活中处处都存在,比如说把大象装进冰箱里,如果是面向编程的话,我们有三个流程,第一步将冰箱门打开,第二步把大象装进冰箱,第三步关闭冰箱门,但是在面向对象思想中,人是一个对象,大象是一个对象,冰箱也是一个对象,在冰箱对象中可以有,开门关门两个方法,在大象对象中可以有大象进入冰箱方法,然后在人这个对象中,人可以控制,冰箱对象和大象对象,在java中万物皆对象,面向对象两个要素:类(对一类事物的描述,是抽象的),对象(是实际存在的,该类事物的每个个题),设计类的话有,属性,方法。

面向对象的三大特征:封装,继承,多态

​ 封装就是将不同的功能抽取出来方便调用,减少大量代码的冗余;说到封装性,就提到了private关键字,private用来定义属性和方法只能由本类进行调用,封装性体现的是将属性私有化,同时提供公共的get和set方法来对属性获取和操作,类的内部数据操作自己完成,不允许外部干涉,进对外暴露部分少量的方法便于调用,简单点说就是将该隐藏的隐藏起来,该暴露的暴露出来,只对外公开简单的接口,便于外界调用。

​ 继承的作用就是减少了冗余代码,让子类与父类之间产生关系,为多态打下基础;子类可以继承父类,然后子类就会拥有父类中的属性和方法,private修饰的不能直接调用,子类可以重写父类中的方法,一个类可以被多个子类调用,一个类只能有一个父类,直接父类、间接父类都可以获取其中的结构。

​ 多态就是一个接口,多种方法,通过继承实现不同的对象调用相同的方法,进而有不同的行为;多态就是一个事务多种形态,对象的多态性就是可以new一个对象子类,多态使用时,当调用子父类同名同参的方法时,实际执行的是子类重写父类的方法,不能调用子类特有的方法。

关键字

static

​ static关键字是静态的,用来修饰属性、方法、代码块、内部类;修饰属性时为静态属性(静态变量),当创建类的多个对象时,多个对象共用一个静态变量,一个对象中对这个静态变量进行了修改,其他对象中的也会修改,静态变量会随着类加载而加载,可通过类进行调用,静态变量要早于对象的创建,由于类只会加载一次,则静态变量也只存在一份,存在方法的静态域中,在静态方法中,只能调用静态方法和静态属性,非静态方法不能调用非静态方法和属性。

final:

​ final关键字可以用来修饰类、方法、变量。当用来修饰类时,此类不能被其他类继承;用来修饰方法时,此方法不可以被重写;用来修饰变量时,这时这个变量就相当于一个常量,也就是被final修饰的变量不能被修改,static final 用来修饰属性的话就是全局常量。

abstract:

​ abstract关键字可以用来修饰类、方法,用来修饰类的话这个类就是抽象类,抽象类不能被实例化;修饰方法的话为抽象方法,抽象方法只有方法的声明,没有方法体,抽象方法的类一定时抽象类,反之抽象类中是可以没有抽象方法的,若子类中重写了父类中所有的抽象方法,则子类可以实例化。

Interface:

​ 接口和类是两个并列结构,在创建接口时,只能定义全局常量和抽象方法(jdk7及以前),定义静态方法和默认方法(jdk7之后),接口中不能定义构造器,意味着不可以实例化。

抽象类和接口特点和区别

**共同点:**都不能被实例化,都可以包含抽象方法,都可以有默认实现方法(jdk8可以用default关键字在接口中定义默认方法)

区别:

① 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码的复用,强调的是所属关系。

② 一个类只能继承一个类,但是可以实现多个接口。

③ 接口中的成员变量只能是public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认default,可在子类中被重新定义,也可被重新赋值。

==和equals的区别

​ 一个是运算符,一个是方法;

​ **==:**可以使用在基本数据类型和引用数据类型中,如果对象是基本数据类型,则比较的是数值是否相等,如果是引用数据类型,则比较的是对象的地址是否相等

​ **equals(): **只能用于引用数据类型,在Object类中,方法equals与==的功能是相同的,都是判断对象的地址是否相等,但是像String、Date、File等包装类中都是重写了equals方法,重写后就是用来比较两个对象的内容是否相同。

String、StringBuffer、StringBuilder

共同点:

底层都是使用char[]存储

不同点:

String是不可变的字符序列

StringBuffer可变的字符序列,底层是可扩容的数组,当需要追加数据时,底层的数组长度不够时,它会再创建一个扩容后的新数组,然后将原来的数据复制过去,然后再在新数组后面追加,线程安全的,效率低

StringBuilder可变的字符序列,jdk5新增的,线程不安全,效率高

异常

在程序运行过程中一般有两种异常事件,Error,Java虚拟机无法解决的问题,Exception:编程错误等可以针对性代码处理,两种处理方式,try-catch-finally,将可能出现问题的代码包装起来,在执行过程中一旦出现异常就去与catch进行匹配,然后进入相应的catch进行处理,一般子类在父类之上,finally是不管有无都会运行finally里面的东西;throws+异常类型处理,写在方法声明处,如果代码执行出现异常直接抛出,还可以通过throw手动生成一个异常

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

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

相关文章

中医脉诊仪:结合传统与现代技术的诊断工具

一、引言 随着科技的不断发展,医学领域也取得了举世瞩目的进步。中医作为一种古老的医学体系,始终保持着其独特的魅力。脉诊作为中医诊断的重要方法之一,历经千年的发展和传承,如今在现代科技的助力下,诞生了中医脉诊…

PostgreSQL标准复制方案

集群拓扑 假设我们使用4单元的标准配置:主库,同步从库,延迟备库,远程备库,分别用字母M,S,O,R标识。 M:Master, Main, Primary, Leader, 主库,权威数据源。S: Slave, Secondary, Standby, Sync…

CTFSHOW web入门——web37

过滤了flag,即c中不能有flag字段。 include包含变量c,因此可以利用文件包含漏洞,让变量c变成php代码,然后通过include函数执行。可以使用data协议获取flag.php文件中的内容 data://协议 通常可以用来执行PHP代码 data://text/pl…

FFmpeg PCM 编码 AAC

1. 概要说明与流程图 1.1 概要: 1) FFmpeg 已经废弃了 AV_SAMPLE_FMT_S16 格式 PCM 编码 AAC,也就是说如果使用 FFmpeg 自带的 AAC 编码器,必须做音频的重采样(重采样为:AV_SAMPLE_FMT_FLTP),否则AAC编码是失败的。 2) 传输 PCM 数据时,采取截取缓存机制,解决接收数据包…

8 年开发告诉你,API 是什么?如何看懂 API 文档

API 指的是应用程序编程接口,它是应用程序之间通信的一种方式,允许应用程序之间相互交互和传输数据。 API 文档是编写 API 的开发人员所提供的用户使用说明,通常包括 API 的用途、参数、请求示例、返回格式等信息,以便开发人员使用…

使用ltp进行三元组提取的实战代码

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Bugzilla详解

Bugzilla详解 引言 Bugzilla是一种开源的缺陷管理系统,用于跟踪软件开发过程中的缺陷、错误和问题。它提供了一个集中化的平台,允许开发团队、测试团队和用户报告和跟踪软件中的缺陷,以便及时发现、修复和验证这些问题。 Bugzilla的作用和用…

前端学习--Ajax(2) form表单

一、form表单 组成&#xff1a;表单标签、表单域&#xff08;采集信息&#xff09;、表单按钮&#xff08;提交&#xff09; 1.1 <form>的属性 action -- 向何处发送表单数据 如果不写默认是当前页面url target -- 在何处打开action的url _blank 在新窗口打开 _self …

设计模式之访问者模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、访问者模式是什么&#xff1f; 访问者模式是一种行为型的软件设计模式&#xff0c;表示一个作用于某对象结构中的各元素的操作…

函函函函函函函函函函函数——one

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paperjie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C知识系统分享》专栏&#xff0c;笔者用重金(时间和精力)打造&#xff0c;基础知识一网打尽&#xff0c;…

java: Compilation failed: internal java compiler error

问题描述&#xff1a; 今天学习一个新的框架 Jbolt-v3.0&#xff0c;然后将它通过 IDEA 导入&#xff0c;运行报错&#xff0c;如下显示&#xff1a; 接着我尝试了百度上的解决方案&#xff0c;依然没有解决&#xff0c;遂即记录一下。 原因分析&#xff1a; 出现这种报错的原…

聚观早报|飞猪:五一出游需求爆发;​特斯拉一季度盈利同比跌20%

今日要闻&#xff1a;飞猪&#xff1a;五一出游需求爆发&#xff1b;特斯拉一季度盈利同比暴跌20%&#xff1b;郑渊洁永远不再发表作品&#xff1b;KargoBot推出无人化自动驾驶卡车&#xff1b;中国6G通信技术研发取得重要突破 飞猪&#xff1a;五一出游需求爆发 4 月 19 日&a…

requests实现系统模拟登录

文章目录 requests模拟登录QWebEngine登录存储数据PySide2使用QWebEngineView报错extension_system_qt.cpp(122) failed to parse extension manifest requests模拟登录 使用requests发送post请求&#xff1b;获取响应头中的Set-Cookie的值&#xff1b;将该Cookie值存入浏览器…

图像ROI与mask掩码与图像几何变换

图像ROI与mask掩码与图像几何变换 感兴趣区域ROI: ⚫ ROI—(region of interest)—感兴趣区域 ⚫ 形状可有矩形&#xff0c;圆形&#xff0c;椭圆形等 ⚫ 能够确定分析重点&#xff0c;减少处理时间&#xff0c;提高精度 使用Rect起点终点范围 示例代码&#xff1a; import…

条码控件Aspose.BarCode入门教程(8):C#从图像中读取条形码

Aspose.BarCode for .NET 是一个功能强大的API&#xff0c;可以从任意角度生成和识别多种图像类型的一维和二维条形码。开发人员可以轻松添加条形码生成和识别功能&#xff0c;以及在.NET应用程序中将生成的条形码导出为高质量的图像格式。 Aspose API支持流行文件格式处理&am…

【对话ChatGPT】如何看待java行业内卷的问题?

本文首发自「慕课网」&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"&#xff01; 作者&#xff1a;ccLoveStudy 当今大环境&#xff0c;编程行业火热&#xff0c;而java行业更是首当其冲&#xff0c;但是为此&#xff0…

( “树” 之 Trie) 208. 实现 Trie (前缀树) ——【Leetcode每日一题】

知识点回顾 &#xff1a; Trie&#xff0c;又称前缀树或字典树&#xff0c;用于判断字符串是否存在或者是否具有某种字符串前缀。 ❓208. 实现 Trie (前缀树) 难度&#xff1a;中等 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树 是一种树形数据结构&#xff…

基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析实践应用

生态系统服务是指生态系统所形成的用于维持人类赖以生存和发展的自然环境条件与效用&#xff0c;是人类直接或间接从生态系统中得到的各种惠益。联合国千年生态系统评估&#xff08;Millennium ecosystem assessment&#xff0c;MA&#xff09;提出生态系统服务包括供给、调节、…

SequoiaDB分布式数据库2023.3月刊

本月看点速览 赋能行业&#xff0c;参编《分布式数据库金融应用发展报告》 脱颖而出&#xff0c;入选2022专精特新黑马大赛年度十强 激烈角逐&#xff0c;成功晋级全国信创优秀解决方案决赛 新穗新彩&#xff0c;多家权威媒体走进巨杉 青杉计划2023持续进行&#xff0c;一起…

Java中字符串的初始化详解

前言 在深入学习字符串类之前&#xff0c;我们先搞懂JVM是怎样处理新生字符串的。当你知道字符串的初始化细节后&#xff0c;再去写String s "hello"或String s new String("hello")等代码时&#xff0c;就能做到心中有数。 首先得搞懂字符串常量池的概…