javase

JavaSE

一、命令行窗口的常用命令

常用命令作用
盘符:切换到某个盘下: D:,C:
dir查看当前路径下的文件信息
cd进入单级目录: cd environment
进入多级目录: cd:\environment\JavaSE\day1
回退到上一级目录:cd…
回退到盘符根目录:cd\
cls清屏

二、JDK安装后Path和Java_home环境变量

  • Path

    Path环境变量用于配置程序路径,方便在命令行窗口的任意目录启动程序

    位置:此电脑-属性-高级系统设置-高级-环境变量-Path

  • Java_home

    Java_home用于告诉操作系统JDK安装在了哪个位置(将来其他技术要通过这个环境变量找到JDK)

三、IDEA常用快捷键

快捷键功能效果
main/psvm、sout、…快速键入相关代码
Ctrl+D复制当前行数据到下一行
Ctrl+Y删除所在行,建议用Ctrl+X(剪切)
Ctrl+Alt+L格式化代码
Alt+Shift+↑
Alt+Shift+↓
上下移动当前代码
Ctrl+/
Ctrl+Shift+/
对代码进行注释

四、Java基础

4.1 注释

  • 单行注释

    // 注释内容,只能写一行

  • 多行注释

    /* 注释内容1 注释内容2 */

  • 文档注释

    文档注释的内容可以提取到一个程序说明文档中

    /** 注释内容 注释内容 */

    快捷键进行注释功能效果
    Ctrl+/单行注释(对当前行进行注释)
    Ctrl+Shift+/对选中的代码进行多行注释

4.2 类型转换

  • 自动类型转换

    小范围类型的变量可以直接赋值给大范围类型的变量

  • 表达式的自动类型转换

    表达式的最终结果类型示由表达式中的最高类型决定

    表达式中byte、short、char直接提升成int来运算

  • 强制类型转换

    大范围类型的变量赋值给小范围类型的变量会出现错误,需要强制类型转换

    格式:数据类型 变量2 = (数据类型)变量1

4.3 运算符

  • *赋值运算符+= -= = /= %=

    适合做数据的累加操作

    自带强制类型转换:a += b 等价于 a =(a的类型)(a + b)

  • 运算符优先级

    &&(短路与)优先级高于 ||(短路或)

4.4 案例技术:键盘录入技术

  • API文档

    应用程序编程接口,技术说明书,告诉我们该怎么使用Java的程序

  • Scanner

    Step1-导包(自动导包):

    import java.util.Scanner;

    Step2-创建扫描器对象:

    Scanner sc = new Scanner(System.in);

    Step3-调用功能接收数据:

    int age = sc.nextInt() ;

    String name = sc.next();

4.5 案例技术:随机数Random类

  • Random

    Step1-导包(自动导包)

    import java.util.Random;

    Step2-创建随机数对象

    Random r = new Random();

    Step3-调用功能接收随机数

    int data = r.nextInt(100);

    //注意:包前不包后(0 - 99)

  • 生成指定区间的随机数

    减加法

    //13 - 45 ==> -13 ==> (0 - 32) + 13

    int data = r.nextInt(33) + 13;

    Java其实给了我们一些功能直接就能得到指定区间的随机数

    int data = r.nextInt(13,46)

    //包前不包后(13-45)

  • origin (inclusive) bound (exclusive)

五、数组

数组变量名中存储的是数组在内存中的地址,数组是引用数据类型

5.1 静态初始化数组

特点:定义数组的时候 直接给数组赋值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B77zL0xs-1655894133800)(./images/静态初始化数组.png)]

5.2 动态初始化数组

特点:定义数组的时候 只确定元素的类型和数组的长度,不存入具体的数据(先定义后赋值)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TdZWP5FS-1655894133801)(./images/动态初始化数组.png)]

5.3 数组的遍历

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffQFqGJr-1655894133802)(./images/数组的遍历.png)]

5.4 数组的内存图

Java的内存分配

方法区:放置类信息class字节码文件

栈内存:方法执行的区域,变量存储的区域

堆内存:new出来的对象,数组对象

5.5 数组使用的常见问题

问题1:

如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException

(数组索引越界异常)

问题2:

如果数组变量中没有存储数组的地址,而是null, 在访问数组信息时会出现NullPointerException

(空指针异常)

六、方法

封装一段代码的语法结构,可以被重复调用,以此提高代码复用性,提高开发效率,让程序逻辑更清晰

6.1 方法定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u6lCGtiY-1655894133802)(./images/方法的定义.png)]

方法与方法之间是平级关系,不能嵌套定义

6.2 方法调用的内存原理

方法没有被调用的时候,在方法区中的字节码文件中存放

方法被调用的时候,需要进入到栈内存中运行

6.3 方法的参数传递机制:值传递

基本类型的参数传递(传递数据值)

在传输实参给方法的形参的时候,并不是传输实参变量本身, 而是传输实参变量中存储的值,这就是值传递

形参:以方法为例,就是方法定义时“()”中所声明的变量

实参:在方法内部定义的变量

引用类型的参数传递(传递地址值)

以数组为例,栈内存中变量(数组首地址)的值没有变化,但是其指向的堆内存中的对象内容变化了

6.4 方法重载

方法重载的形式、作用

形式:同一个类中,多个方法的名称相同,形参列表不同,那么这些方法就是重载方法

作用:对于相似功能的业务场景,可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计

方法重载的识别技巧

只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管

(如:修饰符、返回值类型都无所谓)

形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称

6.5 补充知识:单独使用return关键字

return;

跳出并立即结束当前方法的执行

return关键字单独使用可以放在任何方法中

break;

跳出并结束当前所在循环的执行

continue;

结束当前所在循环的当次继续,进入下一次执行

七、面向对象编程(OOP)

类(设计图):是对象共同特征的描述

对象:是真实存在的具体实例

在Java代码中,必须先设计类,才能new(创建)对象并使用

7.1 类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ji0tRql8-1655894133803)(./images/定义类的格式.png)]

7.2 对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Y0sKkee-1655894133804)(./images/如何得到类的对象.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yGl50Dg6-1655894133805)(./images/如何使用对象.png)]

7.3 对象在内存中的运行机制

方法区-栈内存-堆内存

对象放在堆内存中

对象变量放在栈内存中,存储的是对象在堆内存中的地址

成员变量的数据放在对象中,存在于堆内存里

成员变量在堆内存里,局部变量在栈内存里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DieS8XZs-1655894133806)(./images/面向对象内存机制.png)]

7.4 垃圾回收

当堆内存中的类对象数组对象,没有被任何变量引用(指向)时,就会被判定为内存中的**“垃圾”**

Java存在自动垃圾回收器,会定期进行清理

7.5 构造器

定义在类中的,可以用于初始化一个类的对象,并返回对象的地址

构造器的格式

构造器的分类和作用

无参数构造器(默认存在的):初始化对象时,成员变量的数据均采用默认值

有参数构造器:在初始化对象的时候,同时可以接收参数为对象进行赋值

构造器的注意事项

任何类定义出来,默认就自带了无参数构造器,写不写都有

一旦定义了有参数构造器,那么无参数构造器就失效了,如果还想用无参数构造器,此时就需要自己手写一个无参数构造器

7.6 this关键字

出现在构造器和方法中,代表当前对象的地址

this关键字的作用

可以用于指定访问当前对象的成员变量、成员方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JtRnj98I-1655894133806)(./images/this在参数构造器中.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9GaiQAb-1655894133807)(./images/this在成员方法中.png)]

7.7 封装

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

封装:告诉我们,如何正确设计对象的属性和方法

封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

如何更好地封装

一般建议对成员变量使用private(私有、隐藏)关键字修饰(private修饰的成员只能在当前类中访问)

为每个成员变量提供配套public修饰的getter、setter方法暴露其取值和赋值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUdU3dr6-1655894133808)(./images/更好地封装.png)]

7.8 标准JavaBean

也可以称为实体类,其对象可以用于在程序中封装数据

标准JavaBean须满足如下书写要求:

成员变量使用 private 修饰

提供成员变量对应的 setXxx() / getXxx()方法

必须提供一个无参构造器;有参数构造器是可写可不写的

7.9 补充知识:成员变量、局部变量区别

区别成员变量局部变量
类中位置不同类中,方法外常见于方法中
初始化值不同有默认值,无需初始化没有默认值,使用之前需要完成赋值
内存位置不同堆内存栈内存
生命周期不同随着对象的创建而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的运行结束而消失
作用域在所归属的大括号中

八、常用API(String、ArrayList)

API (Application Programming Interface,应用程序编程接口)

Java写好的程序(功能),可以直接调用

Oracle 也为Java提供的这些功能代码提供了相应的 API文档(使用说明书)

8.1 String

String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用

java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串

Java 程序中的所有字符串文字(例如“abc”)都为此类的对象

8.1.1 String类的特点详解

String其实常被称为不可变字符串类型,它的对象在创建后不能被更改

String变量每次的修改其实都是产生并指向了新的字符串对象,原来的字符串对象都是没有改变的,所以称不可变字符串

字符串对象存在哪里

以“ ”方式给出的字符串对象,在字符串常量池中存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pNFCTJKd-1655894133808)(./images/字符串对象存储.png)]

8.1.2 String类创建字符串对象的方式

方式一:直接使用“ ”定义(推荐方式)

String name = "黑马";

方式二:通过String类的构造器创建对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dbz2XdwP-1655894133809)(./images/通过String类的构造器创建对象.png)]

8.1.3 两种创建方式的区别(面试常考)

以“ ”方式给出的字符串对象,存储于堆内存中的字符串常量池,而且相同内容只会在其中存储一份

通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中分开存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IvCiRYGK-1655894133810)(./images/通过“”定义字符串内存原理.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w77yQikC-1655894133811)(./images/通过new构造器得到字符串对象.png)]

8.1.4 String类常见面试题

8.1.5 String类常用API

字符串内容比较

字符串的内容比较不适合用“==”比较,因为指向的地址不同

推荐使用String类提供的“equals”比较:只关心内容一样即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bLoF5MHA-1655894133812)(./images/equals.png)]

遍历、截取、替换、分割操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BkPnNCD6-1655894133813)(./images/遍历、替换、截取、分割操作.png)]

8.2 ArrayList

ArrayList代表的是集合类,集合是一种容器,与数组类似,不同的是集合的大小是不固定的

通过创建ArrayList的对象表示得到一个集合容器,同时ArrayList提供了比数组更好用,更丰富的API (功能)

8.2.1 ArrayList集合的对象获取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gg5UmmEJ-1655894133814)(./images/ArrayList集合的对象的创建.png)]

8.2.2 ArrayList集合的添加元素的方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DKXayKOa-1655894133814)(./images/ArrayList集合的添加元素的方法.png)]

8.2.3 ArrayList集合对于泛型的支持

使用泛型以统一ArrayList集合操作的元素类型,创建集合对象都应该使用泛型

ArrayList:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型

注意:泛型只能支持引用数据类型,不支持基本数据类型

ArrayList<String> list = new ArrayList<>();
//此集合只能操作字符串类型的元素

ArrayList<Integer> list = new ArrayList<>();
//此集合只能操作整数类型的元素

ArrayList<Object> list = new ArrayList<>();
//此集合可以操作所有类型的元素

ArrayList<Student> list = new ArrayList<>();
ArrayList<Movie> list = new ArrayList<>();
//此集合可以操作自定义类型的元素
8.2.4 ArrayList集合常用API

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzhXZRjk-1655894133815)(./images/ArrayList集合常用方法.png)]

8.2.5 ArrayList集合遍历并删除元素

从前往后边遍历边删除存在问题:可能会存在漏掉元素

删除元素后,马上后退一步i–就可以了

从后往前遍历,边遍历变删除没毛病

8.2.6 ArrayList集合存储自定义类型的对象

ArrayList<Student> list = new ArrayList<>();

ArrayList<Movie> list = new ArrayList<>();

注意:集合容器中存储的是每个对象在堆内存中的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoodEnough_YQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值