Java

111 阅读8分钟

Java长期支持的版本是JDK17。 JRE是Java Runtime Environment缩写,指Java运行环境。

屏幕截图 2024-05-25 215447.png 已安装JDK17和配置path并且下载了idea破解版

image.png Java学习部分: Java程序代码是由编译单元构成的,包括package statement程序包,import statements导入,class declaration类的声明,interface declaration接口。编译单元只能有一个公共类(且必须以这个公共类的名字定义文件名,main函数)。 注释(Ctrl+shift+/)多行注释

基本数据类型:

boolean,char,byte,short,int ,long ,float,double。

声明变量的语法形式:

type variableName1,variableName2.... type variableName =intvalua声明多个变量时要用逗号隔开

整形包括:short,int,long,byte.

浮点数包括:float,double。

布尔型变量只有两个关键字true,false

字符型:char

运算符学习:

operator 指明对操作数进行的与运算

数据类型转换:

1.自动类型转换 指占内存字数少的向占内存多的类型方向转换 2,强制类型转换 而强制类型转换正好是反的 指占内存字数多的向占内存字数少的转换(布尔类型不参与强制类型转换) 方法为:(type)variable

自增自减

单目运算符 operator variable or variable operator

赋值运算符

(:?)条件赋值运算符(+=,-=...)与算数运算符的联用

关系运算符

大于,小于,等于,不等于(> < = !=)等关系运算符常与布尔运算符联用作为条件判断语

逻辑运算符

boolean 运用时boolean variable=......

三元运算符判断语句

有且只有一个(:?) variable=condition:expression1?expression2

当variable=condition成立即值为true时运行expression1,否则为expression2

掌握if判断的三种格式,学习switch判断语句

if-else

switch(expression)

case expression valuable1.....break;(跳出)

........

default .....(与前面所有的case语句都不匹配则执行default语句)

循环语句

增强for循环

增强for循环必须有被遍历的目标,目标只能是Collection或者是数组,而且增强for循环只能用作遍历,for (元素的数据类型 变量: Collection集合or数组) {body}

for(初始值;终止条件;迭代部分){body }(通常用于循环次数确定的情况下)

初始值,终止和迭代部分可以都为0,相当于无限循环。初始值和迭代部分可以用逗号分隔多个表达式

while(boolean-termination){body}(通常用于循环N次) while(true)无限循环

do-while

do{body}while(boolean-termination)无论boolean-termination是否为true,都会执行一次

数组

1. 数组的定义

数组是一种复合数据类型,数组中每个数据具有相同的数据类型,数组有一维数组和多维数组。

2. 数组的创建

声明格式为:modifer type[]arrayName

modifer为数组的属性,分为protected,public,private。数组也需要new运算符动态的创建分配内存,格式为:arrayName=new type []

3. 数组的异常

1.数组索引值越界异常

public static void main(String[] args) { int[] arr = new int[]{1,2,5,5,5}; arr[12] = 0;

2.空指针异常

赋值为null或者当定义了引用类型变量或初始化引用类型数组初始化时未赋值,便使用该变量或取数组数据便会抛出该异常(引用类型的初始化默认值为null)

4. 数组的遍历

foreach循环 for(int i:list){}

list.forEach(i->System.out.println(i))

list.forEach(System.out::println)

5. 数组的拷贝

for循环拷贝和clone()

int[] array1 = {1, 2, 3, 4};

int[] array2 = array1.clone();

  • 浅拷贝

若果是对象数据类型,只是把原来对象的内存地址拷贝给新的对象(在浅拷贝中,如果数据类型是对象数据类型,在拷贝过程中,其中一个对象改变了内存地址,另一个对象也会受到影响)

  • 深拷贝

深拷贝:把对象当中的所有属性,拷贝给新的对象。并且拷贝内存地址。(深拷贝前后两个对象互不影响。)

6.Array 方法

toString() 输出数组中的值(针对一维数组)System.out.println(Arrays.toString(数组名))

deepTostring() 输出数组中的值(针对多维数组),以一维为一个单位整体输出System.out.println(Arrays.deepTostring(数组名))

sort()使数组中的值以升序的顺序排列

equals()类似于boolean,输出值仅分为true,false。判断数组中的元素是否完全相同(针对一维数组)。

deepEquals()与equals()方法相似,但是针对于多维数组。

fill(数组,valuable)指把数组中的每个值替换为valuable、

fill(数组,fromindex,toindex,valua)把数组从第fromindex到toindex(包括fromindex,但是不包括toindex)全部转换为value

方法

方法相当于函数,但是是在类或接口中声明的。[modifer][static]返回类型 方法名(){body;}

modifer缺省时默认为protected类型。static一直不释放,static方法想要操作的变量必须也得是static类型的。 main方法是一个程序开始执行的入口,main方法的定义:

public class A

{public static void main(String []args)

...... }

方法的重载,方法名一致,而参数列表不同

基本数据类型包括:

字符类型:char
整数类型:long、int、short、byte
浮点类型:float、double 布尔类型:boolean

引用数据类型就是除了基本数据类型以外的数据类型,如String等等

基本数据类型是存放在栈上的,传递时依据数值传递,而引用数据类型是存放在堆上的,调用方法时作为参数是按引用传递的,传递的是引用的副本。

面向对象学习

封装

Java类只有被实例化才能被使用,创建对象需要用new。格式为:

className ObjectName;

ObjectName =new className();创建储存空间后才能成为具有实际内容的变量

调用对象的某个变量或方法:

objectReference.variable;

objectReference.methodNmae;

this关键字

针对访问或调用当前类对象的变量和方法而言的,类似于指针变量,this指向当前类,super指向父类。调用方法:

this.variable or methodName(){}

this变量不能在static方法中使用,当类中和方法中定义的变量名一致时,可以用this变量。this变量的作用域是整个类。

this还可以调用当前类的构造方法,格式为:this(形参列表)只针对构造方法,在构造方法体中使用,并且应在第一行,调用当前类的带有输入参数和无输入参数的构造方法

继承

类继承的语法格式:[modifer]class SubClassName extends SuperClassName

继承是链式的,父类包括所有直接或间接继承的类。类的基础允许子类使用父类的变量和方法,但是是有限的,子类可以继承父类中public和protected的成员变量和方法,不能继承和访问private的

继承关系测试,动态测试一个对象是属于那些类(含父类)的实例的功能,语法格式为:

[boolean b=]oneObj instanceof ClassName;panduan oneObj是否为ClassName类或者ClassName类的父类的一个实例

多态

多态指的是一个对象的行为方式可以有多种不一样的操作形态。返回类型和输入参数不同,此种方法重载体现了多态性,多态主要是通过方法的重载和覆盖体现的,面向对象的多态特性是使用同一个类的不同构造方法创造多个类对象。

接口(interface)是封装了一组方法和常量,声明一个接口格式为:

[modifer]interface InterfaceName[extends OtherInterfaceName]修饰符选项有public,protected,abstract。接口的声明中没有没有任何修饰符时,该接口被修饰为abstract,接口定义规则与定义类是一样的。

接口的实现,声明格式为:[modifer] class OneClass implements OneInterface

接口作为“父类”,类继承接口时,接口中声明方法,在类中的方法体中编写操作代码。

接口多重继承语法格式:

接口继承多个接口[modifer] interface OneInterFaceName extends InterFace1,InterFace2.....

子类继承父类和实现多个接口,实现格式为:

[modifer] class SubClass extends SuperClass implements SomeInterface{

returntype SomeMethod()}

接口和抽象类的不同之处,接口中的成员变量需要赋初值,而抽象类不用,抽象类可以定义普通方法和抽象方法,而接口中只能定义抽象方法,接口中声明的变量自动被修饰为final,方法自动被修饰为abstract,接口可以被看作“纯”的抽象类

常用API

ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口

ArrayList使用时需要引用java.util 包

import java.util.ArrayList;

ArrayList objectName =new ArrayList<>();

ArrayList 提供了很多方法

添加元素:ArrayList list = new ArrayList();
list.add()

删除元素:ArrayList sites = new ArrayList();sites.remove()

计算长度:ArrayList sites = new ArrayList();sites.size()

对数字或字母排序:Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。Collection.sort(sites)

屏幕截图 2024-05-26 230858.png

final修饰符

当final修饰符出现在类的声明中,表示该类不能被继承或有子类,是一个终态类,使用格式为:

final Class finalclass{ final variable;//声明常量 fianl returntype method;//声明方法 }

String类

String类用于创建字符串对象,创建后视为常量不可改变,String类中操作方法是针对以经创建的String对象而言的,而String对象是通过String类的构造方法创建的

创建形式:String string = new String();

也可以直接在创建对象时指定字符串内容: String string1 = "Hello World"; 

索引:String.substring(int start)
String.substring(int start, int end)

indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置,若存在多个子字符串,返回数值最小的整数值;如果没有找到子字符串,返回-1。

屏幕截图 2024-05-26 233004.png