Java基础入门
-
Java一门 高级 编程语言
-
Java是 sun 公司研发的,现在属于 oracle 公司
-
Java之父是 詹姆斯.高斯林
-
Java主要是来做 企业级 应用开发的
-
Java的三大技术体系是:
技术体系 | 说明 |
---|---|
Java SE(Java Standard Edition):标准版 | Java技术的核心和基础 |
Java EE(Java Enterprise Edition):企业版 | 企业级应用开发的一套解决方案 |
Java ME(Java Micro Edition):小型版 | 针对移动设备应用的解决方案 |
-
搭建java开发环境必须先要安装 JDK
-
JDK应该去 Oracle 官网下载
-
JDK目前发展到 21 版本,LTS版本有 8 11 17 版本
-
验证JDK,需要在命令行窗口中输入 Java -version 查看jdk的版本号
-
Java开发环境中的编译命令是 javac , 执行命令是 java
- 开发一个程序需要经过三个步骤: 编写 编译 执行
- Java代码要要求:文件名称的后缀必须是 .java 结尾
- Java代码要要求:文件名称必须与 public 修饰的类名一致 名称一致
- Java代码要要求:必须使用 英 文模式下的符号
注释是什么?
- 写在程序中对程序进行解释说明的文字
- Java程序中书写注释的方式有几种,各自有什么不同?
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */
- 注释有什么特点?
- 不影响程序的执行,编译后的class文件中已经没有注释了。
- 注释的快捷键是怎么样的?
- Ctrl + / 单行注释(对当前行进行注释)
- Ctrl + Shift + / 对选中代的码进行多行注释。
字面量
- 字面量是什么?
- 数据在程序中的书写格式
- 字符、字符串在程序中的书写格式有什么要求?
- 字符: 单引号引起来的单个内容
- 字符串: 双引号引起来的任意内容
- 真、假、空的书写格式是?
- true、false、null
变量
-
变量是内存中的一块区域,是用来存储 数据 的
-
变量的完整定义格式是: 数据类型 变量名称 = 数据;
-
变量的好处是:编写的代码更 加灵活、高效和易于维护
-
变量的特点:装的数据是 封装好 的
-
变量要先 先声明,后使用
-
什么类型的变量,只能存储什么类型的数据。
-
变量存在访问范围,同一个范围内,多个变量的名字 不能一样
-
变量定义时 可以 不给赋初始值;但是在使用时,必须赋初值
关键字, 标识符, JDK
-
什么是关键字?
- 关键字就是Java自己要用到的词,并且有特殊含义的一些词。
- 我们就不能用来为做为:类名、变量名,否则会报错!
-
什么是标识符?
- 标识符就是自己定义的名字
- 标识符的规则:仅由数字,字母,下划线,美元符等组成,且不能数字开头,不能用关键词、区分大小写
-
JDK由哪些组成?
-
JVM虚拟机:真正运行Java程序的地方。
-
核心类库:Java自己写好的一些程序,给咱们的程序调用的
-
开发工具:javac、java、…
-
-
Java的跨平台含义是什么?
- 一次编译,处处可用
-
Java如何实现跨平台的?
- Java为不同的系统提供了不同类型的JVM
- 我们的程序只需要开发一次,就可以在各种安装了JVM的系统上运行
-
JDK安装后,需要配置什么?
- 配置JAVA_HOME=jdk安装位置
- 在path中追加JAVA_HOME/bin
-
Path环境变量的作用是什么?
- Path环境变量用于配置程序的路径
- 方便我们在命令行窗口的任意目录启动程序
Java基础入门
数据存储
-
数据在计算机底层都是使用二进制进行存储的
-
快速计算一个数据的二进制方式是 除二取余法
-
数据在计算机底层存储的基本单元是 byte
-
数据在计算机底层存储的最小单位是 bit
-
字符存的是 ASCII码 表中对应的数字的 二进制 形式
-
字符’0’对应的数字是 48
-
字符’A’对应的数字是 65
-
字符’a’对应的数字是 97
-
图片、声音、视频等等内容在计算机中都是想办法转为 二进制 存储的
数据类型
基本数据类型
-
数据类型分为几种?
基本数据类型:4类8种
- 整型: byte short int(默认) long
- 浮点型: float double(默认)
- 字符型: char
- 布尔型: boolean
- 引用数据类型: String
-
随便写的整数、小数字面量,他们默认什么类型?
- 23 ,默认是int类型 , 加上L/l就是long类型的数据了。
- 23.8,默认是double类型,加上F/f就是float类型了。
-
什么是自动类型转换?
- 类型范围小的变量,可以直接赋值给类型范围大的变量
-
表达式的自动类型转换规则是什么?
- 小范围的类型会自动转换成大范围的类型运算
-
表达式的最终结果类型是由谁决定的?
- 最终类型由表达式中的最高类型决定
-
表达式的有哪些类型转换是需要注意的?
- byte short char是直接转换成int类型参与运算的
-
什么是强制类型转换?
-
默认情况下,大范围类型的变量直接赋值给小范围类型的变量会报错!
-
可以强行将类型范围大的变量、数据赋值给类型范围小的变量。
目标数据类型 变量 = (目标数据类型)变量值
-
-
强制类型转换有哪些需要注意的?
- 可能出现数据丢失。
- 小数强制转换成整数是直接截断小数保留整数。
运算符
+ 除了做基本数学运算,还有哪些功能?
与字符串做+运算时会被当成连接符,其结果还是字符串。
识别技巧:能算则算,不能算就在一起。
1、自增、自减运算符是什么,有什么作用,需要注意什么?
++、–;对当前变量值+1、-1
只能操作变量,不能操作字面量
2、自增、自减运算符放在变量前后有区别吗?
如果单独使用放前放后是没有区别的。
非单独使用:在变量前 ,先进行变量自增/自减,再使用变量。++i
非单独使用:在变量后 ,先使用变量,再进行变量自增/自减。i++
扩展赋值运算符的作用是什么?有什么特点
-
+=可以实现数据的累加,把别人的数据加给自己。
-
扩展的赋值运算符自带强制类型转换。
-
三元运算符
- 执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。
流程控制语句
if语句
if分支的作用是什么?
可以根据条件,选择执行某段程序
if分支的写法有几种?
if (条件表达式) {
语句体;
}
if (条件表达式) {
语句体1;
} else {
语句体2;
}
if (条件表达式1) {
语句体1;
} else if (条件表达式2) {
语句体2;
} else if (条件表达式3) {
语句体3;
}
. . .
else {
语句体n+1;
}
注意:
如果if语句的{}中只有一行代码的情况,{}可以省略不写(但是不推荐省略)。
if(条件){},()后不能跟“;”否则{}中的代码将不受if的控制了。
switch
switch分支的格式、执行流程是怎么样的?
switch(表达式){
case 值1:执行代码1;break;
case 值2:执行代码2;break;
…
case 值n-1:执行代码n-1;break;
default:执行代码n;
}
if、switch的区别有哪些?
if适合做区间匹配,功能强大
switch适合做值匹配,性能更好
注意事项:
1、使用switch时有哪些注意事项?
表达式类型可以是byte、short、int、char、枚举、String,不能是double、float、long
case给出的值不允许重复,且只能是字面量,不能是变量。
正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
2、switch穿透性能解决什么问题?
存在多个case分支的代码是一样时,可以把代码写到一个case块,
其他case块通过穿透性能,穿透到该case块即可,这样可以简化代码。
for循环
for(初始化语句 ; 条件判断语句; 条件变更语句 ) {
循环体语句 ; //要重复执行的代码
}
- for循环的作用是什么?
- 减少代码的重复编写,灵活的控制程序的执行。
while循环
初始化语句;
while (循环条件) {
循环体语句;
条件变更语句;
}
数组
1、什么是数组?
数组是一个装数据的容器,并且要求装的数据都要是同一种类型
2、什么时候使用数组?
批量操作同类型数据时,建议使用数组。
3、使用数组的好处是什么?
使用数组可以减少代码开发,而且代码逻辑更清晰
静态初始化数组
写法:
//简化格式
数据类型[] 数组名 = { 元素1,元素2 ,元素3,… };
int[] ages = {12, 24, 36, 48, 60};
// 完整格式 数据类型[] 数组名 = new 数据类型[]{ 元素1,元素2 ,元素3… };
int[] ages = new int[]{12, 24, 36, 48, 60};
注意点:
数据类型[] 数组名 也可写成 数据类型 数组名[]
什么类型的数组必须存放什么类型的数据
1、数组是属于什么类型,数组变量名中存储的是什么?
数组是引用数据类型
数组变量名中存储的是数组在内存中的地址信息
2、在数组中,索引是用来做什么的?
索引,又叫下标,是指一个数据元素在数组里面排在第几个的位置
索引是是从0开始计数的
动态初始化数组
1、动态初始化数组的写法是什么样的?
数据类型[] 数组名 = new 数据类型[长度];
int[] ages = new int[4];
2、动态初始化数组后元素的默认值是什么样的?
byte、short、int 、char、long类型数组的元素默认值都是0
float、double类型数组元素的默认值都是0.0
boolean类型数组的元素默认值是false
引用数据类型数组的元素的默认值是null
3、两种数组定义的方法各自适合什么业务场景?
动态初始化:开始不确定具体元素值,只知道元素个数
静态初始化:一开始就知道要存入哪些元素值
重点
1、运行一个Java程序,主要看JVM中包含的哪几部分内存区域?
方法区: 存放class文件
栈内存: 方法被调用后,进入栈内存,变量也存在这
堆内存: new出来的东西进入堆内存
2、 简单说说 int a = 20; int[] arr = new int[3]这两行代码的执行原理?
a是变量,直接放在栈中,a变量中存储的数据就是20这个值。
new int[3]是创建一个数组对象,会在堆内存中开辟区域存储3个整数。
arr是变量,在栈中,arr中存储的是数组对象在堆内存中的地址值。
1、多个数组变量,指向同一个数组对象的原因是什么?需要注意什么?
原因:多个数组变量中存储的是同一个数组对象的地址
注意:多个变量修改的都是同一个数组对象中的数据
2、如果某个数组变量中存储的null,代表什么意思?需要注意什么?
代表这个数组变量没有指向数组对象
可以输出这个变量,但是不能用这个数组变量去访问数据或者访问数组长度,
会报空指针异常:NullPointerException
方法
1、什么是方法?
方法就是把一些代码打包在一起,用到的时候就调用
2、方法要执行必须怎么办?
必须进行调用
3、使用方法有什么好处?
提高代码的复用性,提高代码的可维护性
方法的定义和声明
1、基本方法的定义格式
public static void 方法名 ( ) {
方法体;
}
2、基本方法的调用格式
方法名 ( ) ;
3、方法的注意细节
方法必须先定义后调用,不调用不执行
方法的定义顺序不影响执行结果,但是调用顺序影响执行结果
方法执行完毕后,会回到调用的地方,继续向下执行
1、带参数方法的定义格式
public static void 方法名 ( 参数1,参数2,…… ) { … … }
2、带参数方法的调用格式
方法名 ( 参数1,参数2,…… );
3、带参数方法的注意细节
方法调用时,实参必须与形参保持同样的类型、数量和顺序
形参:全称形式参数,是指方法定义中的参数
实参:全称实际参数,方法调用中的参数
1、带返回值的定义格式
public static 返回值类型 方法名 (参数) {
方法体;
return 返回值;
}
2、带返回值方法的调用格式
数据类型 变量名 = 方法名 (实参);
3、带返回值方法的注意细节
return部分返回数据的类型必须和方法定义时声明的返回值类型一致
方法的注意事项
方法不调用就不执行
方法调用时,实参必须跟形参匹配;返回值必须跟return结果匹配
方法与方法之间是平级关系,不能嵌套定义
方法的执行顺序和编写顺序无关,但是和调用顺序有关
方法的返回值类型为void,表示该方法没有返回值,可以省略return不写
在void方法中可以单独书写return,表示结束方法,return后面不能跟具体内容
return语句下面,不能编写代码,因为永远执行不到,属于无效的代码
方法的重载
判断方法重载的两个重要条件是什么
方法名称相同
形参列表不同(数量、类型、顺序)
-
方法的运行区域在哪里
- 栈内存
-
栈有什么特点
- 先进后出
-
基本类型和引用类型的参数在传递的时候有什么不同?
- 基本类型的参数传输存储的数据值
- 引用类型的参数传输存储的地址值
面向对象编程
面向对象
1、 在Java中, 一切皆 对象
2、 对象其实就是一个具体的东西,可以使用 属性和行为 对其进行具体描述
3、类与对象的关系: 类是创建对象的 模版 , 对象是类的具体 实现 ;
4、目前要设计一辆车,牌子是奥迪,颜色是红色,功能是拉货
按照面向对象的思想,应该怎么实现?
① 创建一个类,类中有属性:牌子和颜色, 还有一个行为是:拉货
② 根据上面的类创建一个对象(new)
③ 给对象的属性赋值,然后调用它的行为方法
类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义,比如:Student、Car…
类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)。
成员变量本身存在默认值,同学们在定义成员变量时一般来说不需要赋初始值(没有意义)。
数据类型 | 明细 | 默认值 |
---|---|---|
byte、short、char、int、long | 0 | |
基本类型 | float、double | 0.0 |
boolean | false | |
引用类型 | 数组、String | null |
对象名要求和类名相似,但是需要首字母小写,建议和类名同名
一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名。
内存相关
1、Student s1 = new Student()在计算机中的执行原理是
每次new Student(),就是在堆内存中开辟一块空间,代表一个学生对象
s1变量里面记住的是学生对象的内存地址值
2、如何识别一个变量是引用类型的变量?
这个变量中如果存储的是内存的地址值,那么他就是一个引用类型的变量
3、执行Student s1 = null 在计算机中会发生什么?
变量s1中保存的内存地址值会被设置为null
地址值对应的内存区域如果没有其它变量引用,就会被垃圾回收器自动回收
封装
封装理论
1、什么是封装?
在程序设计中,应当把对象属性和行为设计到对象内部去,而且对象中的数据不能被随意访问。
2、为什么要封装?
在类中默认定义的变量是随时可被其他类访问、修改,是不安全的
3、如何封装?
使用private修饰成员变量(public进行修饰公开成员,private 进行修饰私有成员)
4、封装之后如何访问数据
提供对应变量的set/get方法
this关键字
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中,方法外 | 常见于方法中(形参或单独定义) |
初始化值不同 | 有默认值, 不需要初始化赋值 | 没有默认值,使用之前必须完成赋值 |
内存位置不同 | 堆内存 | 栈内存 |
作用域不同 | 整个对象 | 在所归属的大括号中 |
生命周期不同 | 与对象共存亡 | 随着方法的调用而生,随着方法的运行结束而亡 |
1、this关键字是什么?
this就是一个变量, 可以用在方法中 ,用来代表调用当前方法的对象;
哪个对象调用方法,this就指向哪个对象,也就是拿到哪个对象。
2、this关键字在实际开发中常用来干啥?
用来解决对象的成员变量与方法内部变量的名称一样时,导致的访问冲突问题
3、成员变量和局部变量的区别
类中位置、初始化值、内存位置、作用域、生命周期
构造器
1、书写格式
1. 方法名必须和类名保持一致
2. 方法没有返回值,也不能使用void修饰
3. 创建对象时,构造方法会被自动调用
4. 一个类中,如果没有任何的构造方法,Java会自动生成一个无参构造
2、应用场景
可以使用全参构造器在创建对象的时候完成对变量的赋值
3、注意事项
1. 一个类中,如果没有任何的构造方法,Java会自动生成一个无参构造
2. 一个类中,一旦有了有参构造方法,Java将不会再生产无参构造,此时如果需要无参构造,可以自行创建
public class Student {
/** 构造器 */
public Student() {
...
}
}
javabean
1、实体类的作用和注意点是什么
实体类是用来保存数据的java类,可以用它创建对象,保存某个事物的数据。
实体类只负责数据存取,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离。
2、实体类有啥特点?
1. 成员变量必须私有,且要为他们提供get、set方法
2. 必须有无参数构造器, 可以有带参构造
字符串、集合
1、声明一个包的关键字是什么?
package com.itheima.javabean;
public class Student { }
2、在自己类中调用其他包下的程序的注意事项
① 要调用自己所在包下的其他类,可以 直接通过类名访问,不需要导入。
② 要调用其他包下的类,则必须在当前类中 使用import语句导入相应的类 , 才可以访问
③ java.lang 包下的类是不需要我们导包的,可以直接使用。
④ 要调用多个不同包下的类,而这些类名正好一样,此时默认只能导入一个类,另一个类必须 使用import static语句或者在代码中使用完整的类名(包括包名)访问。
String中常用的方法
方法名 | 说明 |
---|---|
public int length() | 获取字符串的长度返回(就是字符个数) |
public char charAt(int index) | 获取某个索引位置处的字符返回 |
public char[] toCharArray(): | 将当前字符串转换成字符数组返回 |
public boolean equals(Object anObject) | 判断当前字符串与另一个字符串的内容一样,一样返回true |
public boolean equalsIgnoreCase(String anotherString) | 判断当前字符串与另一个字符串的内容是否一样(忽略大小写) |
public String substring(int beginIndex, int endIndex) | 根据开始和结束索引进行截取,得到新的字符串(包前不包后) |
public String substring(int beginIndex) | 从传入的索引处截取,截取到末尾,得到新的字符串返回 |
public String replace(CharSequence target, CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public boolean contains(CharSequence s) | 判断字符串中是否包含了某个字符串 |
public boolean startsWith(String prefix) | 判断字符串是否以某个字符串内容开头,开头返回true,反之 |
public String[] split(String regex) | 把字符串按照某个字符串内容分割,并返回字符串数组回来 |
String对象的内容不可改变,被称为不可变字符串对象。
String有哪几点注意事项
-
只要是以“…”方式写出的字符串对象,
会存储到字符串常量池,且相同内容的字符串只存储一份 -
通过new方式创建字符串对象,
每new一次都会产生一个新的对象放在堆内存中 -
String对象的内容不可改变,被称为不可变字符串对象。
ArrayList
构造器 | 说明 |
---|---|
public ArrayList() | 创建一个空的集合对象 |
常用方法名 | 说明 |
---|---|
public boolean add(E e) | 将指定的元素添加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
public E get(int index) | 返回指定索引处的元素 |
public int size() | 返回集合中的元素的个数 |
public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
public boolean remove(Object o) | 删除指定的元素,返回删除是否成功 |
public E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
1、集合是什么,有什么特点?
一种容器,用来存储数据的
集合的大小可变
2、ArrayList是什么? 怎么使用?
是集合中最常用的一种,ArrayList是泛型类,可以约束存储的数据类型。
创建对象,调用无参数构造器初始化对象:public ArrayList();
调用相应的增删改查数据的方法
的元素添加到此集合的末尾 |
| public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
| public E get(int index) | 返回指定索引处的元素 |
| public int size() | 返回集合中的元素的个数 |
| public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
| public boolean remove(Object o) | 删除指定的元素,返回删除是否成功 |
| public E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
1、集合是什么,有什么特点?
一种容器,用来存储数据的
集合的大小可变
2、ArrayList是什么? 怎么使用?
是集合中最常用的一种,ArrayList是泛型类,可以约束存储的数据类型。
创建对象,调用无参数构造器初始化对象:public ArrayList();
调用相应的增删改查数据的方法
标签:Java,入门,int,知识,数组,java,方法,public,变量
From: https://blog.csdn.net/Founder_Xiao_Xin/article/details/136944179