没基础能参加java吗

没基础能参加java吗java 基础教学 注释 注释的含义 用来让自己看懂 对代码的一种解释说明 单行注释 多行注释 文档注释 注释的使用细节 注释内容不会参与编译与运行 仅仅是对代码的解释说明 书写时不要嵌套 关键字 1

大家好,我是讯享网,很高兴认识大家。



java基础教学:

注释:

注释的含义:

用来让自己看懂,对代码的一种解释说明

单行注释

//

多行注释

/* */

文档注释( )

/ */

注释的使用细节:

注释内容不会参与编译与运行,仅仅是对代码的解释说明

书写时不要嵌套

关键字:

1.什么是关键字:

被Java赋予了特殊含义的英文单词

2.关键字的特点:

关键字的字母全部小写

关键字有特殊的颜色标记

3.class关键字是什么意思

class表示定义一个类 后面跟随类名

有点像 void int之类的

字面量:

什么是字面量:

数据在程序中的书写格式

字面量的类型:

整数类型

image-20231115204710617

image-20231115203721234

小数类型

image-20231115203802386

字符串类型

用双引号引起来的

image-20231115203815158

字符类型

用单引号引起来的

image-20231115203831637

布尔类型

image-20231115203936872

空类型

image-20231115203948037

image-20231115204632870

 
讯享网 

制表符

在打印的时候,*把前面的字符串长度补齐到八或者八的整数倍最少补一个空格最多补八个空格

`

讯享网

`

变量:

变量的使用方法:

1.输出打印

数据类型 变量名 =数据值;

`

 

`

2.参与计算

讯享网

3.修改变量记录的值

 

4.变量的注意事项

只能存一个值刚才的**10已经被覆盖

变量名不允许重复定义

一条语句可以定义多个变量

 

变量在使用前一定要进行赋值

错误示范:

 

数据类型

image-20231115224618865

image-20231115224847207

long 后面定义的时候在最后加一个大写的L;

float 后面加一个F做后缀

double 后面不用加

 

image-20231115225543254

 text2  ​  输出老师信息  ​  姓名:李宇航  ​  年龄:19  ​  身高:180.1  ​  性别:男  ​  是否单身:是
 

里面可以放多个

标识符

硬性要求

由数字,字母,下划线(—)和美元符($)组成

不能以数字开头

不能是关键字

区分大小写

软性建议

image-20231115232108704

image-20231115232138482

键盘录入

image-20231115232522635

这个导包有点像C语言里面的题头

Scanner就是C语言里面的scanf

导包,找到Scanner这个类在哪,是固定的

 

运算符

 

1.算数运算符:

有小数参加不一定精确

 

test3位数分离

 

改动:

image-20231116093941878

运算符

算数运算符:

1.数字相加

数字运算时,数据类型不一样时不能运算,需转换成一样的,才能运算

 

隐式转换(自动类型提升)

把一个取值范围小的数值,转换成取值范围大的数据

image-20231116091419936

image-20231116091500076

byte short char 三种类型的数据在运算的时候,都会直接提升为int ,然后再进行运算

 

image-20231116091955940

2.强制转换

image-20231116092219948

 

2.字符串的相加

当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了,会将前后的数据进行拼接,产生一个新的字符串

“123” + 123

“”

连续+时,从左到右逐个执行

加不加引号是两个东西

image-20231116093208088

image-20231116093324157

image-20231116093355556

image-20231116093423590

image-20231116093520621

image-20231116093606238

最后一个相当于“3abc2”+1

3.字符相加

当字符加字符或者字符加数字时会先转换成ASCI表中数字进行计算

image-20231116094402328

自增自减运算符

image-20231116100127218

单独使用

++和 - - 不管是前面还是后面单独放在一行结果都是一样的

参与计算

 

赋值运算符

image-20231116101340738

赋值运算符隐含了强制转换类型

关系运算符

image-20231116101919215

 

image-20231116102408465

 

逻辑运算符

image-20231116103503466

1.两边都是true才输出true

 

2.两边都是假结果才是假

 

3.相同为true,不同为false

 

4.取反

感叹号不要写多次要么写要么不写

 

短路运算符

image-20231116104957801

短路运算符就有短路逻辑效果

当左边的表达式能确定最终的结果,那么右边就不会参与运算了

 

image-20231116112342834

三元运算符

 

image-20231116113959532

image-20231116114123264

image-20231116114340787

运算符的优先级

image-20231116114508783

小括号优先于所有运算符

顺序结构

从上向下

分支结构

if语句

 

布尔类型直接把变量放在括号内,不要使用判断符号

image-20231116120111357

 
 

switch case

image-20231116171752471

image-20231116175007323

image-20231116185408651

无限循环

image-20231116191503976

 

数组

1.数组静态初始化

手动指定数组元素,由系统给出元素个数,计算出数组的长度

类型 [] 命名=new 类型 内容

 
 

明确具体数值

2.数组动态初始化

手动指定元素长度,由系统给出默认初始化值

类型 [] 命名 = new 类型 [长度]

只明确元素个数,不明确具体数值

 

3.数组的内存图

4.数组的常见问题

越界

 

索引最大长度是数组长度减一

5.数组的常见操作

<1>求最值

 

<2>.随机生成1到100以内的随机数十位,并存入到数组中去

 

5.random函数的用法

1.导包
 

2.创建对象
 

3.获取随机数
 

其中println变成print时不会换行但是+“ ”,会有一个空格

6.交换数据

 

数据倒叙:

 

7.数据打乱

 
 

8.数组内存图

1.只要是new出来的就在堆里开辟了一个小空间

2.如果new了多次,那么在堆里有很多小空间,每个小空间中都有各自的数据

3.两个数组指向同一个空间的内存图

4.第二个数组输入的数据会覆盖掉第一个数组中的数据

5.当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问时就是修改后的结果了

方法(函数)

1.什么是方法?

程序中最小的执行单元

把重复的代码,具有独立功能的代码抽调到方法中

可以提高代码的复用性

提高代码的可维护性

2.方法的格式

方法的定义

  • 最简单的方法定义
 
 

 

 

  • 带参数的方法定义和调用

方法调用时,参数的数量与类型必须与方法定义中的小括号里面的变量一一对应,否则程序将报错,可以是具体的数值,也可以是一个变量

 

 

 

  • 带返回值的方法的定义

.1.根据方法的结果,去编写另一段代码

image-20231121085322128

比较长方形的面积

 

  • 注意:

方法不调用就不执行

方法与方法之间是平级关系,补能把一个写到另一个里面

方法的编写程序与执行顺序无关

方法的返回值类型为void,表示没有返回值

没有返回值的方法可以省略return语句不写

如果要编写return,后面不能跟具体的数据

return语句下面,不能编写代码,永远不会执行

3.方法的重载

  • 在同一个类中,定义了多个同名的方法,这些同名的方法具有同种功能
  • 每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系
  • 简单记:同一个类中,方法名相同,参数不同的方法,与返回值无关 没基础能参加java吗
  • 参数不同:个数不同,类型不同,顺序不同
 

遍历数组

 

遍历数组求最大值

 

拷贝数组内容

 

4.方法的基本内存原理

在进栈时按照函数类型从上至下,进入栈中却是从下至上,输出时又是从下至上

5.基本数据类型和引用数据类型

image-20231121194956463

  • 引用数据类型:

变量中储存的是地址值

引用了其他空间中的数据

6.方法的值传递

基本数据类型存储的是真实的数据

引用数据类型存储的是地址值

引用数据类型可以改变内容

java快捷键:

1.for.i

 

2.sout

 

3.ctrl+p

显示方法中的形参

4.ctrl + alt+m

自动抽取方法

API:应用程序编程接口

image-20231124193813521

 

常用API:

Math

 
 
 
 
 

Object

 

所以我们想要获得实际的内容就要对toString方法重写

 
 
 

equals

 
 

JDK7时间-Date

最开始以英国格林尼治时间为准,太阳直射时就是中午十二点

后来用原子钟计时:利用铯原子的振动频率计算出来的时间,作为世界标准时间(UTC)

震动9,192,631,770次等于一秒

中国时间是世界标准时间+8小时

一秒等于1000毫秒

一毫秒等于1000微秒

一微秒等于1000纳秒

 

明年的时间:

 

随机创建两个时间对象,并比较他们的大小

 

JDK7时间-SimpleDateFormat

作用:将时间格式化,更符合人们的阅读习惯

 

image-20231212120638937

 

image-20231212130812891

 

将字符串生日格式化

 

image-20231212145345991

在转换时只能先将其转换为对应格式然后创建date对象之后再将该对象转换为字符串形式

一个简易的计票系统

 

JDK时间-Calender

Calender 代表了系统当前时间的日历对象,可以单独修改,获取时间中的年月日

细节1:

Calender是一个抽象类,不能直接创建对象,而是通过一个静态方法获取到子类对象

底层原理:

会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。

会把时间中的纪元,年,月,日,时,分,秒,星期,等等都放到一个数组当中,注意:

因为是数组所以索引从0开始

细节2:

月份:范围0~11,如果获取出来的是0,那么实际是一月

星期:在老外的眼里,星期日是一周中的第一天,以此类推

下面方法是创建一个对象把1970那个时间放入,如果想用现在时间则省去第2,3步,输出结果就是现在时间

get方法:

 

set方法:

获取时间里面想要的数据

 
 ​

image-20231212185348921

使用set对日历中的日期进行修改

 
 ​

add 格式与set相似在原来的日期上进行加减

 
 

JDk8新加时间类

ZoneId类

 

Instant类

 

image-20231212211355928

image-20231212211425868

image-20231212211754390

image-20231212211904849

image-20231212212240238

image-20231212212620796

image-20231212212653141

image-20231212212903573

image-20231212213327378

image-20231212213436491

image-20231212213520319

再转换基本数据时超出范围的数字才会被转换,否则将会被转换为一个数组内的值所以127,128的比较结果不一致

image-20231212214055990

对象和对象之间不可以直接相加减,所以还要把对象换为基本数据类型

为了避免按麻烦出现了自动装箱,自动拆箱的方法,实际上可以把int和integer视为一个东西

image-20231212220338851

image-20231212220627334

image-20231212220722418

image-20231212220747432

image-20231212220958662

字符串

image-20231211194242368

equals方法的使用是要看前面的调用者是谁,前面是字符变量时,判断比较对象是否是字符串变量,若是再比较内部属性,若不是,则直接返回false,前面是对象时,若没有进行方法的重写则直接进行地址的比较,也是返回false,虽然返回的结果相同,但是有实质性差别

1.String 字符串

image-20231124204133483

2.String 构造方法代码实现和内存分析

image-20231124205123933

在网络当中传输的数据都是字节类型

我们一般要把字节信息进行转换,转换成字符串

image-20231124205322956

 

image-20231124210636179

3.字符串的比较

 

4.遍历字符串,并统计各类型数量

 

5.字符串拼接和反转

 

6.substring函数的使用

 

image-20231127212903765

image-20231127214207319

image-20231127220307222

reverse 反转字符

image-20231127221726299

image-20231127223350630

ArrayList

集合的特点:

1.可以自动扩容没有固定长度

自动伸缩,可长可短

2.数组可以存储基本数据类型还有引用数据类型

集合可以存储引用数据类型,在存储基本数据类型时要将其变成对应的包装类

错误示范:

 

int 就是基本数据类型,所以不可以直接使用

String 是引用数据类型,可以直接使用

JDK 7之前的写法

 

现在改为:

 
 

ArrayList 是已经处理过的一个类,打印集合时不是集合的地址值而是集合里面的内容

集合的运用:

添加:
 

在以上添加任务中原来的字符是“456”,在添加之后不会把原来的覆盖而是加在原来内容之前,原来的数据会向后推移一个

image-20231210191655419

删除:
 

当要删除的元素不存在时,删除失败

删除时也可以根据索引来删除,索引的顺序就是添加元素时的顺序

修改:

将原来索引上的内容覆盖

 
查询:
 
遍历:
 

集合中基本数据类型的遍历:

 
 

在集合遍历时存放数据还是要new 一个变量来接收集合里面的值

 

上面是已经对对象进行了内容赋值的方法

下面是一种手动对对象进行赋值的一种方法

 

image-20231210210919636

异常

概念:

异常就是程序出现了不正常的情况

异常及其子类是Throwable的形式,表示合理应用程序可能想要捕获的条件

异常类和不是RuntimeException的子类的任何子类都是检查异常

检查异常:

在编译期间必须要处理的,否则不能通过编译

RuntimeException类:

在编译期间不需要修改的,在报错之后才要回来修改的

比如说索引超出范围

image-20231218191601036

Error:严重问题,不需要处理

Exception:称为异常类,他表示程序本身可以处理的异常

JVM的默认处理方案

  • 把异常的名称,异常的原因及异常出现的位置等信息输出在了控制台
  • 程序停止运行

异常的处理方法

try …catch …

格式:

 

执行流程:

程序从try里面的代码开始执行

出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统

当Java运行时系统接受到异常对象时,会到catch中去找匹配的异常类,找到后进行异常处理

执行完毕后,程序还可以继续往下执行

 

image-20231218194757914

Throwable的成员方法:

getMessage:

返回此throwable的详细消息字符串

就是错误的原因

toString :

返回此可抛出的简短描述

异常的名称,还有原因

printStackTrace:

输出错误的类名,原因,位置

编译时异常还有运行时异常的区别:

编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译

好像是什么编译时就会出来提示需要修改

 

运行时异常:无需显示处理,也可以和编译时异常一样处理

 
 

异常处理之throws

把异常抛出去,并不会解决问题运行到有问题的地方还是会停下来,还得用try…catch…来处理

  • 就是个延后处理方式,将来谁调用谁处理
  • 运行异常时可以不处理,出现问题后,需要我们回来改代码

自定义异常:

 

image-20231218221142169

image-20231218221231073

泛型:

1.什么是泛型

泛型出现的背景:

JAVA推出泛型之前,程序员可以构建一个元素类型为Obeject的集合,该集合能够储存任意的数据类型对象,而在使用该集合的过程中,需要程序员明确知道储存每个元素的数据类型,否则很容易引发ClassCastException异常

泛型是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许我们在编译时检测到非法的类型数据结构

泛型的本质:

参数化类型,也就是所操作的数据类型被定为一个参数,算是把类型做一个指定

 

里面对存储元素的规定<String>就是泛型的一个指定

泛型的好处:

  • 类型安全
  • 消除了强制类型的转换

2.泛型类,接口

image-20231219103536580

指定一个数据类型,却可以操作多个数据类型

 
 

image-20231219110309644

image-20231219110512644

泛型类,不支持基本数据类型,<int>等

同一泛型类根据不同数据类型创建的对象,本质上是同一类型

3.泛型类使用

 

4.泛型类派生子类

  • 子类也是泛型类,子类要和父类的泛型类型要一致
  •  
  • 子类不是泛型类,父类要明确泛型的数据类型
  • 那么子类就是普通类,并且只可以使用父类已经指定的数据类型
     

5.泛型接口

泛型接口的使用

  • 实现类不是泛型类,接口要明确数据类型
  •  

实现类是泛型类时,要和接口的泛型类保持一致

实现类泛型标识包括接口泛型表示即可,不用非得完全一致

 

6.泛型方法

泛型方法:是在调用方法的时候指明泛型的具体类型

public 与返回值中间<T> 非常重要,可以理解为声明此方法为泛型方法

只有声明了<T>的方法才是泛型方法,泛型类中使用了泛型的成员方法并不是泛型方法

<T> 表明该方法将使用泛型类型<T>,此时才可以在方法中使用泛型类型<T>

与泛型类的定义一样,此处T可以随便写成任意标识,常见的如:T,E , K , V 等形式

image-20231219192725255

 

可变参数的泛型方法的调用:

 

泛型方法能使方法独立于类而产生变化

如果static方法要使用泛型能力,就必须使其成为泛型方法

7.类型通配符

类型通配符一般是使用“ ?”代替具体的类型实参

所以,类型通配符是类型实参,而不是类型形参

Integer 继承于 Nmuber,在主函数的使用中,如果定义方法想要向方法中传递其他类的类型时,若传递的数据类型不一样,那么就使用通配符来代替

 

8.类型通配符的上限

 

要求该泛型的类型,只能是实参类型,或实参类型的子类类型

如果在其中使用了集合等不可以向其中添加元素

9.类型通配符的下限

 

要求该泛型的类型,只能是实参类型,或实参类型的父类类型

10.类型擦除

在进入JVM之前,与泛型相关的信息会被擦除掉,我们称之为– – 类型擦除

 

image-20231220114707371

image-20231220114628383

image-20231220121953691

image-20231220122028838

image-20231220122111924

11.泛型和数组

泛型数组的创建

可以声明带泛型的数组引用,但是不能直接创建带泛型的数组对象

 

只有类型相同的数组还有集合才能赋值

可以通过java.lang.reflect.Array的newInstance(Class<T>,int)创建T[] 数组

 
 

 

12.泛型和反射

 

单列集合顶层接口Collection

集合体系结构

image-20240321173307658

有序指的是:添加和取出的数据是有序的,一致的,而不是像数字排序一样,将内容排序

可重复指的就是:里面添加的元素是可重复的

有索引指的是,可以通过添加的顺序来进行查找,所以List集合有普通for循环查找

 

 
 

 

迭代器

  • 注意细节:
  • 当强行获取空指针的时候,就会传出报错NoSuchElementExecption
  • 迭代器遍历完毕,指针不会复位,所以想要继续迭代的话,就要创建新的迭代器
  • 循环中只能用一次next方法,不可以出现第二个next
  • 迭代器遍历时,不能用集合的方法进行添加或者删除

 

 

增强for循环

 

Lambda表达式

 

List中常见的方法

 

 

image-20240322104300342

数据结构

特点:后进先出,先进后出

数据进入栈的过程称为:压/进栈

image-20240322104700518

队列

特点:先进先出,后进后出,从后端进,从前端出

image-20240322104926322

泛型进阶

泛型类

在没有泛型的时候,集合的数据类型可以随意添加,但是在遍历获取的时候,就会很麻烦,我们在获取数据时,无法用它的特有行为

 

当有泛型的时候,我们可以使用他特有的方法,并且可以轻易的对他的数据类型做一个强转

泛型的好处:

  • 统一数据类型
  • 把运行时期的问题,提前到了编译时期,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来

扩展知识点:

Java中的泛型是伪泛型,只是在添加的时候会做一个判断,看是不是限定类型数据,但是当添加进去后,就又转成Object类型了,当向外获取时,又会重新转换成特定类型

双列集合

特点:

  1. 双列集合一次需要一队数据,分别为键和值
  2. 键不能重复,值可以重复
  3. 键和值是一一对应的,每一个键只能找到自己对应的值
  4. 键和值这个整体我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象”

Map常见API

 

键取值遍历

 

键值对遍历

 

Lambda表达式

 

HashMap

  • HashMap是Map里面的一个实现类
  • 没有额外需要学习的特有方法,直接使用Map里面的方法就可以了
  • 特点都是由键决定的:无序、不重复、无索引
  • HsahMap跟HashSet底层原理是一模一样的,都是哈希表结构

image-20240322144453120

 

image-20240322145914109

小讯
上一篇 2024-12-27 22:09
下一篇 2024-12-30 14:47

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/3763.html