JavaSe部分总结

news2024/12/17 10:36:16

我们先来了解一下Java语言,JavaSE是Java编程语言的标准版,主要是来学习Java的基本语法,书写方式,以及一些简单的逻辑循环和判断,包括一些关键字,特殊类(抽象类),特殊的方法(static修饰的方法,final修饰的方法)等等,最重要的是Java语言是比较C语言和C++语言是比较简单的,Java是面向对象的语言,面向对象的语言的三大特性"封装","继承","多态",Java作为面向对象语言的一种,也是具有这样的特性的

Java语言的编译过程是靠JVM(虚拟机)来完成的,先把编译好的.java文件,传入的JVM中编译成.class的文件(这里的内容都是乱码,我们是看不懂的,但是机器可以),这些.class文件传入计算机进行读写,输出我们想要的内容,正因为有JVM这一步的编译使得Java代码的可移植性,比较高,虽然可移植性高,但是有利有弊,这样就使得Java代码的效率变低了,占用的空间也变大了

第一部分:基本数据类型与数组

第一小部分:类型可以分为四大类:1.逻辑类型,2.整数类型,3.字符类型4.浮点类型

1.逻辑类型:也就是boolean类型的"true""false"

2.整数类型:从小到大排序为"byte","short","int","long",我们在Java代码中长用的是int,和long最常用的是int,Java中的变量声明为 "数据类型  变量名;"例如"int num;"

3.字符类型:字符类型是用关键字"char"来声明的,要注意的是单引号('')中的是字符,双引号("")中的是字符串.也叫String类

4.浮点类型:float,和double 在Java代码中最常用的是 double 类型的,float 类型在使用的时候在后面要加上"f"或"F",比如"float num = 12.3f或 float num = 12.3F"在使用float的时候一般我们都是加"F"更好区分

第二小部分:类型转换

数据类型我们按照精度从小到大排序可以排成:byte , short , char , int , long , float , double 

类型转换我们分成两种:1.自动类型转换,2.强制类型转换

1.自动类型转换:精度由小到大,比如"double num = 100;"这就是"int"转"double"

2.强制类型转换:精度由大到小,会导致精度丢失,比如"int num = (int)19.2F",把float类型的强制转为int类型的会导致小数点后面的部分丢失.

第三小部分:输入输出

1.输入:我能使用Java.util中的Scanner类来帮我我们解决,比如Scanner scanner = new Scanner(System.in);这个过程是创建对象的过程,我们也叫"实例化"

2.输出:用"System.out.println();"通过这个语句可以进行输出

第四小部分:数组的声明

1.一般采取的声明方式为:数据类型[] 数组名 = new 数据类型[],比如"int[] arr = new int[]";第一个[]中是不可以放数字的,这一点不同于其他编程语言,也是我自己在写代码中发现的自己出现的问题

2.二维数组的声明:声明的方式和一维数组的方式一样,二维数组的本质就是一维数组.

3.访问数组中的元素:我们通过数组名[数字]的方式来访问数组中的内容"num[4]",在访问的事后要注意出现"数组越界"的发生

第二部分:运算符和语句

1.运算符:"过"(这个不会别学编程了)

2.语句:

2.1 if()语句:当()中的内容为true的时候会进入if 条件的内部

2.2 if()-else() 语句:当if()中的内容为true的时候会进入if 条件的内部,如果为false就会进入else()中

2.3 多重的if()-else()语句:可以同if()-else() 语句进行理解

2.4 switch()开关语句:此语句在使用的时要多注意加"default",满足条件后要关闭使用

2.5 while()循环语句:()中的条件每循环一次都会进行一次判断,如果判断的结果为"true"就进入循环继续执行,如果为false就退出循环

2.6continue和break语句:多用于循环当中区别在于continue是跳过此处循环,而break是终止本次循环,退出循环,我们通过在循环语句中加入这两个语句,让我们在必要的时候退出循环,避免陷入到死循环的陷阱中

2.7 for(表达式1;表达式2;表达式3){}:for语句起到判断并循环的用法,在我们写Java代码中也是我们最常用的语法,表达式1是声明变量,表达式2是判断语句,表达式3是更新变量语句.

2.8 for与数组的关系:我们可以通过for循环的特点,通过循环遍历数组中的每一个元素.在通过输出语句可以打印输入数组中的每一个元素.

2.9 import语句:import是导入类库中的类,也可以导入自定义包中的类

第三部分:类与对象(核心部分)

3.1类的声明:通过class关键字来声明类,比如"class Test1",写类的目的是为了描述一类事物所有的属性和功能,在声明类的时候类名的首字母要大写

3.2类体:类体中存在的是"方法"和"变量(成员变量)"

3.3成员变量和局部变量:成员变量是在类中声明的变量,生命周期是程序的开始运行到程序的结束,局部变量是在方法中声明的变量,生命周期是方法的被调用的开始与结束,生命周期与成员变量相比较短,我们通过"this"关键字的方式把成员变量的值赋给局部变量使用,也可以用来防止变量名的重复导致,程序在运行的时候无法识别我们是使用的成员变量还是局部变量.

3.4方法:方法的声明是放在类中的不是放在"main"方法中的,"main"方法我们也叫主方法,方法中是不可以在声明方法的,会报错,方法的声明要放在类中,这也是我在自己实践中亲身出现的错误

3.5构造方法:每个类都会有构造方法,如果你在类中没有写构造方法,编译器也会,默认生成一个构造方法,构造方法的方法名必须和类名是一样的,而且是没有返回值的,我们可以根据定义,不同的形参,创建多个构造方法

3.6声明对象:通过类名加对象名的方式,比如"类名 对象名",也可以通过"类名 对象名 = new 类名"的方式进行对象的声明

3.7对象的引用和实体:我们在进行对对象中的内容进行比较的时候,如果通过"new"创建出来的对象进行比较,那我们比较的就是它们的"引用",也就是简称为存放的"地址",反之我们的比较的是里面的内容.

3.8实例变量和类变量:实例变量和类变量本质都是成员变量,类变量是被关键字"static"修饰过的变量,也叫"静态变量",不同对象的实例变量是不同的,类变量是被所有变量所共同拥有的,可以通过类名直接访问类变量,类变量不能被"this和super"使用.

3.9实例方法和类方法:被关键字"static"修饰过的方法是类方法,我们通过对象调用实例方法,通过类名调用类方法

3.10:方法重载:我们可以在一个类中定义多个名字相同的方法,要想构成方法重载,这些名字相同的方法  形参的数据类型 形参的个数,至少有一个是不相同的,才能构成方法重载,我们在调用方法的时候,根据传入的参数个数,以及传入参数的数据类型来去区别方法,进而调用不同的方法.

第四部分:关键字和访问权限

4.1this关键字:在构造方法中,我们定义的形参与构造方法中接受这些形参的局部变量相同时,我们通过关键字"this",来区分传入的参数和局部变量,this出现在实例方法中时,this表示正在调用该方法中的当前对象.

4.2private权限:也叫私有的,被private修饰过的方法和变量,叫私有变量和私有方法,这样的方法和变量的使用范围是在当前类中,其他类中不能访问,我们一般把变量的访问权限都定义为private,方法看情况

4.3public权限:也叫公共的,其他类中也可以访问被该类修饰的方法和变量"main"方法就是

4.4 instanceof运算符:在instanceof中当左边的操作元素是右边类或者是其子类所创建的对象时,会输出true否则输出false

4.5 super关键字:子类从父类中继承得到的方法和成员变量被,隐藏和被重写时,我们再次调用时,我们调用的就是子类中新写的,方法和变量,如果我们想要访问被覆盖和隐藏的方法和变量时,我们可以通过"super"关键字获取的父类中的信息.访问方法"super.fun()",访问变量"super.n".

4.6 final关键字:final修饰过的类是不可以被继承的,final修饰过的变量数值是不能被修改的,final修饰过的方法是不可以被重写的,

第五部分:子类与继承

5.1子类与父类:我们创建类一个"Animal"类和"Dog"类通过关键字"extends"完成"Dog extends Animal"此中的Dog就是Animal的子类,Animal就是Dog的父类

5.2子类的继承性:

5.2.1子类和父类在同一个包中:子类继承了父类中访问权限不是"private"的所有的方法和成员变量,继承的成员变量和方法的权限都是与父类的权限是一样的

5.2.2子类和父类在不同包中:子类会继承父类的中的protected,和public权限的方法和变量

5.2.3成员变量的隐藏:在子类中声明一个与父类名字一样的成员变量,子类中的这个成员变量就会隐藏父类中的成员变量,

5.2.4方法重写:在子类中声明一个与父类一样的方法,子类声明的方法就覆盖掉了子类从父类中继承的原方法,

5.2.5对象的向上转型对象:通过这个方法,我们可以创建父类的对象去实现子类的实例,我们通过不同的向上转型,但是通过相同的对象可以调用不同子类中的方法 "Anmial a = new Dog"

第六部分:我们来讲解一下"面向对象"的编程语言的三大特点"封装","继承",''多态'',同样也是Java的特性,在Java中封装是为了,方便调用者,我们把一些必要的东西给封装起来,避免调用者对其修改,有降低了调用者的思考,比如我们就不需要去了解"JVM"内部是什么样的,就大大降低了,程序员的门槛.继承,是为了帮助我们在写代码是的内聚性,一个好的代码,内聚性一定是低的,使得我们更加容易读懂代码,在多个类中我们可能会用到相同的变量和方法,我们可以通过继承的方式获取到,这在一定程度上是降低了我们代码的行数,也体现出的一定的面向过程,多态,多态的存在是因为继承的原因,我们的继承只可以单继承,不可以实现多继承出现,多继承会出现"菱形继承"问题,我们为了实现多态就实现了接口,接口中的方法是抽象方法,接口中声明的方法是不需要具体实例的,所有实现接口的类,都必须要重写接口中的抽象方法,抽象类的定义是:抽象类被"abstract"关键字修饰,抽象类中一定会有抽象方法,而接口中的方法都是抽象方法,接口可以被多个类次实现,这也就弥补了,类不能实现多继承的问题.

我们在来讲解一下内部类,异常类和匿名类:在Java中类中还是可以定义类的但是,用的是比较少的,只有匿名类用的比较多,简单来说就是在类的内部再定义一个类.

关于Java中的异常,我们为了确保程序的正常运行,我们会在程序可能出现异常的地方进行异常的检查,我们会把异常信息放入到"try{}"中,如果try{}中出现异常就会把异常抛出,与try{}一起使用的是"catch(){}"try{}中抛出异常会与catch()中的内容进行匹配,如果catch(){}中有相对应的异常信息,程序就会打印输出相关的异常信息,程序员看到相关的异常信息会快速定位到出现异常的位置,修改代码,如果catch(){}中没有相对应的异常,就会交给JVM来处理,程序会终止.

最后我们来讲解一下String类,String类中的东西确实比较多,而且也非常常用,但是都是比较简单的,我就简单来讲解一下,比如String的常量,String的对象,但是要注意的是,String的常量是不可修改的,可以理解为被final关键字修饰过,String类中还有许多方法,比如我们比较常用的,比较两个字符串中的内容关键字"equals()",还有String数组.这里比较多我就不一一介绍了.

我简单讲解一下我的收获,在大学的生活很安逸,也就是在这种状态下我度过了大一的时间,当我回过头想想的时候,我以后要干什么?我会干什么?我的专业能让我干什么?,这三个问题一直困扰着我,我在刚刚大一的时候,我的目标就是好好学习,拿奖学金,入党,拿三好学生,但是我的短板我也知道,就是英语太差,导致我在大一下学期的期末考试时,英语挂科了,我也知道挂科意味着什么,我大二就索性摆烂了,就在我不作为的一段时间中,我通过我们的课程了解到了编程,根据现在的情况来看当个程序员,并不是好的选择,但是以我目前的学校层次,和我自己的短板,我不敢拿将近3年的时间去赌考研成功,我知道我一旦失败了,我是不可能复习的,我前面的功课对我未来找工作是没有任何作用的,我也打电话听取了我目前在211就读的哥哥的意见,我就开始想我在大学剩下的时间里去学习一门什么样子的"技术",在多次权衡下我就选择了走编程这一条路,现在我已经系统的学习了一个半月,把JavaSE部分学习完毕,并写下此次总结,我相信实力才是王牌.

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

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

相关文章

【GCC】2015: draft-alvestrand-rmcat-congestion-03 机器翻译

腾讯云的一个分析,明显是看了这个论文和草案的 : 最新的是应该是这个 A Google Congestion Control Algorithm for Real-Time Communication draft-ietf-rmcat-gcc-02 下面的这个应该过期了: draft-alvestrand-rmcat-congestion-03

学习笔记:Verilog VHDL硬件描述语言简介及在线仿真Verilog环境

RTL Verilog VHDL HLS等概念 RTL Register Transfer Level,寄存器传输级。它是数字电路设计中的一种抽象层次,描述了电路中寄存器之间的数据传输和逻辑操作。RTL代码通常用Verilog或VHDL语言编写,是后续综合、仿真等工作的基础。 VHDL全名Ve…

druid图形化监控 + MyBatis优化器使用

文章目录 1.集成druid图形化监控1.配置application.yml2.测试访问 http://localhost:项目端口/druid 2.MyBatis优化器(显示完整sql)1.目录2.SqlBeautyInterceptor.java:sql拦截器3.MybatisConfiguration.java:将sql拦截器注入容器4.测试5.MyBatis优化器动…

1216作业

思维导图 作业 使用无名信号量实现输出春夏秋冬 #include <myhead.h> sem_t sem1,sem2,sem3,sem4; void *fun1() {while(1){sem_wait(&sem1);sleep(1);printf("春\n");sem_post(&sem2);} }void *fun2() {while(1){sem_wait(&sem2);sleep(1);prin…

学习maven(maven 项目模块化,继承,聚合)

前言 本篇博客的核心&#xff1a;理解maven 项目模块化&#xff0c;继承&#xff0c;聚合 的含义 maven 项目模块化 含义 maven项目模块化&#xff1a;使用maven 构建项目&#xff0c;管理项目的方式&#xff0c;我们可以将maven项目根据内在的关系拆分成很多个小项目【模块】…

【Linux】自定义项目-进度条

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 准备工作&#xff1a;"\r"与"\n"字符 ①&#xff1a;基本含义 在C语言和Linux环境中&#xff0c;\r是回车符&#xff0c;\n是换行符&#xff0c;用于控制文本格式和输出…

OpenLinkSaas 2025年1月开发计划

先来看看OpenLinkSaas的大目标 在OpenLinkSaas的产品目标中&#xff0c;让开发人员更加方便的使用云资源是目标之一。通过各大云厂商的API&#xff0c;来可视化云上基础设施的数据是远远不够的。我们准备在2025年1月份增加方便管理和运营研发场景下服务器的能力。 这部分的功能…

电工电子技术实验:电压比较器及其应用电路

实验目的 1&#xff0e;了解电压比较器与运算放大器的性能区别&#xff1b; 2&#xff0e;掌握电压比较器的结构及特点&#xff1b; 3&#xff0e;掌握电压比较器电压传输特性的测试方法&#xff1b; 4&#xff0e;学习比较器在电路设计中的应用 实验原理 电压比较器是一…

代理 IP 行业现状与未来趋势分析

随着互联网的飞速发展&#xff0c;代理 IP 行业在近年来逐渐兴起并成为网络技术领域中一个备受关注的细分行业。它在数据采集、网络营销、隐私保护等多个方面发挥着重要作用&#xff0c;其行业现状与未来发展趋势值得深入探讨。 目前&#xff0c;代理 IP 行业呈现出以下几个显著…

旅游系统旅游小程序PHP+Uniapp

旅游门票预订系统&#xff0c;支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统 更新日志 V1.3.0 1、修复富文本标签 2、新增景点入驻【高级版本】3、新增门票核销【高级版】4、新增门票端口【高级版】

【日常笔记】Spring boot:编写 Content type = ‘text/plain‘ 接口

一、项目场景&#xff1a; 接口&#xff1a;Context-Type&#xff1a;text/plain 方式&#xff1a;POST 项目场景&#xff1a;硬件回调接口 二、实战 PostMapping(value "/xx/xxx", consumes "text/plain" ) 2.1、接口 /*** return String* time 202…

STM32F407+LAN8720A +LWIP +FreeRTOS UDP通讯

STM32F407+LAN8720A +LWIP +FreeRTOS ping通 上一篇实现了LWIP ping 通 本篇实现UDP通讯 实现如下功能: 串口1空闲中断+DMA接收,收到数据用UDP发送UDP接收,收到数据用串口1发送STM32CUBEIDE配置和代码 1. 配置UARAT1的空闲中断+DMA接收 UART1接收到数据,释放信号量,在任…

KeyFormer:使用注意力分数压缩KV缓存

Keyformer: KV Cache Reduction through Key Tokens Selection for Efficient Generative Inference 202403&#xff0c;发表在Mlsys Introduction 优化KV cache的策略&#xff0c;主要是集中在系统级别的优化上&#xff0c;比如FlashAttention、PagedAttention&#xff0c;它…

3.9 网际控制报文协议ICMP

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言1 ICMP报文的封装2 ICMP差错报告报文的类型3 不应发送ICMP差错报告报文的情况4 常用的ICMP询问报文类型5 ICMP的应用 前言 网际控制报文协议&#xff08;ICMP&#xff09…

东北大学《2024年839自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《东北大学839自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题

百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!

百度智能云千帆 AppBuilder 发版升级&#xff01; 进一步降低开发门槛&#xff0c;落地大模型到应用的最后一公里。在千帆 AppBuilder 最新升级的 V1.1版本中&#xff0c;企业级 RAG 和 Agent 能力再度提升&#xff0c;同时组件生态与应用集成分发更加优化。 • 企业级 RAG&am…

就业相关(硕士)

一、嵌入式 1.机器人行业 1.1 大致情况 要做机器人行业&#xff0c;主要技术栈是运动控制、深度学习、强化学习、具身智能等&#xff0c;主要求职方向有运动控制算法工程师和机器人算法工程师等等。大致薪资在30w到50w不等&#xff0c;主要看方向&#xff08;双211&#xff…

Selenium操作指南

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 大家好&#xff0c;今天带大家一起系统的学习下模拟浏览器运行库Selenium&#xff0c;它是一个用于Web自动化测试及爬虫应用的重要工具。 Selenium测试直接运行在…

OpenCV相机标定与3D重建(11)用于在图像上绘制世界坐标系的三条轴函数drawFrameAxes()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从姿态估计绘制世界/物体坐标系的轴。 cv::drawFrameAxes 是 OpenCV 库中的一个函数&#xff0c;用于在图像上绘制世界坐标系的三条轴&#xff0…

spring学习(XML中定义与配置bean(超详细)。IoC与DI入门spring案例)

目录 一、配置文件(XML)中定义与配置bean。 &#xff08;1&#xff09;bean的基础配置。&#xff08;id、class&#xff09; &#xff08;2&#xff09;bean的别名配置。 1、基本介绍。 2、demo测试。 3、NoSuchBeanDefinitionException&#xff01; &#xff08;3&#xff09;…