欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA学习笔记(四)

程序员文章站 2022-04-27 19:01:58
...

十二、Java集合

1、import 和 package 的区别:

import 可以导入包,package 表示这些 java 程序文件在同一个包下。

package apackage;
import bpackage.B;
public class A {

2、ArrayList是Java的链表类,可以通过如下的代码来导入这个集合类:

import java.util.ArrayList;
import java.util.List;

通过使用ArrayList 我们可以对链表做基本的插入、删除、查询、遍历等操作。

3、Iterator (迭代器):迭代也就是遍历,这个类可以遍历容器里的所有对象,它主要有以下两种方法——

next():获取序列的下一个元素

hasNext():检查序列中是否还有元素

import java.util.Iterator;

4、for(int i:a)循环:先设置一个与a数组里的元素相同的变量,这个变量先等于a数组的第一个元素,然后进入循环体,第二次循环就等于a数组的第二个元素,进入循环体,以此类推。

5、常用容器 Map :映射,每一组映射作为一个 <键,值> 对保存在Map容器中

map.entrySet():将map里的每一个键值对取出来封装成一个Entry对象在存到一个Set里。

Map.Entry<String, String>:是一个泛型,表示Entry里装的是两个string的字符串,分别是key和value。

import java.util.HashMap;
import java.util.Map;

// List.addAll方法:添加所有元素到列表中


十三、封装

JAVA通过访问控制关键字实现信息隐藏,这些关键字包括:public、protected(只有继承自己的子类才能访问)、private

// this 的用法:不能在static方法中使用,表示对当前对象的应用,使用对象为类的成员变量而不是函数参数,只能引用一个构造方法而且必须位于开始

1、在 Source 中用 “Generate Getters and Setters”可以自动生成参数的 get和 set 方法  //想要让外部访问该成员变量,可以用这个方法给私有成员变量生成 public 访问方法 (即 setter、getter)

在 Source 中用 “Generate Constructor using Fields”可以自动生成参数的构造方法

2、使用 extends 表示继承关系,子类可以继承复用父类的代码
class A extends B {
}

3、super :表示调用父类的构造函数,调用父类中带有参数的构造函数时,用 super(方法名);

4、const:常量

5、final :用于变量声明,可以阻止其内容被修改,相当于变量常数,约定 final 变量的所有字符大写,final 变量可以被子类继承但是不能被之类覆盖,final 不能修饰构造方法

//构造方法也是一种方法,但是构造方法没有返回类型(默认无参数),且必须与类同名,用 public 修饰

// Java 中 Final 方法使用内联机制,提高执行效率

// final 修饰类(class)的时候,不能被继承


十四、抽象类与接口

1、面向对象的三大要素:封装、继承与多态

//图片转载自知乎 如何用一句话说明面向对象

JAVA学习笔记(四)

2、抽象类:abstract

抽象类不能实例化对象(即不能通过 new 方法名()来创建对象),必须被继承才能使用。

abstract class 方法名 {
}

(1)抽象修饰类

(2)声明抽象方法:类中包含抽象方法则该类必须是抽象类;子类必须重写父类的抽象方法,否则声明子类自身为抽象类

// 声明抽象方法直接在方法名后加 ; 

3、接口:一组抽象方法的集合,无法被实例化但可以被类实现,用 interface 定义接口,接口定义的方法没有方法体,由于接口可以外部访问,所以不需要用 public 修饰

(1)接口中也可以声明变量,一般为 final 与 static 类型,以常量来初始化,实现接口的类不能改变接口的变量;如果接口的访问权限是public 的话,它所有的方法和变量都是 public

//run方法:线程执行时需要的步骤,通过 start() 方法可以调用 run()

(2)用类实现接口:implements

类需要对接口中的每一个方法都给出实现

(3)用接口类型声明的变量可以引用到一个实现该接口的对象

// ArrayList 是 List 接口的实现;HashMap 是 Map 接口的实现

// 接口中的方法不能是静态的

package blog;

import java.util.List;

public interface PostRepository {
 
	public void add(post Post); 
	public post getPostById(long id);
	public void remove(long id);
	public List<post> getAll();
	public void loadData();
	public void saveData();
}
在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们;但是抽象类不支持多继承。接口不能提供任何方法的实现,但是支持多继承

4、多线程——同时运行多个线程的程序叫做多线程程序,每一个任务称为一个线程

JAVA线程解释


十五、异常

1、算术异常

2、为了使异常发生时,系统仍然能够正常运行而不是直接停止,可以使用“ try / catch ”代码

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

// printStackTrace()方法:在命令行打印异常信息在程序中出错的位置及原因 

catch 代码块:

catch(ExceptionName e){
  e.printStackTrace();
}

一个 try 必须有一个或者一个以上的 catch 与之对应

3、用 throws 来声明可能出现异常的方法,以便之后用 try/catch 处理

public static void fun() throws Exception{
		
	}
Exception类是 java.lang.Throwable 类的子类,Exception 的子类异常包括:算术异常(ArithmeticException)、在变量未指向对象时应用其成员(NullPointerException)/* 例如在数组为null时求其长度*/、访问数组中不存在的元素(ArrayIndexOutOfBoundsException)等

4、自定义异常

//toString() :将对象转换成字符串形式,即用文字描述这个对象里各个变量是什么值、什么类型等

public class test10 extends Exception {

	public test10(String string) {
		// TODO Auto-generated constructor stub
	}	
  //............
} //创建一个自定义异常

   class test11 {
	
	   private static void fun() throws test10{ //通过 throws 抛出异常对象,用法为: throws 异常对象;
		   //.....
		   throw new test10("异常命令"); 
	   }
5、一个try 可以对应多个catch 语句,注意 catch 语句的顺序
       如果使用catch(Exception e)语句,那么它不能放在其他catch语句的前面,否则后面的catch永远得不到执行,因为Exception是所有异常的父类,可以匹配任何异常。

6、finally 语句:不管异常被捕获与否都要执行,即使在 try/catch 中有 return、break 也能执行,除非之前执行了 System.exit(0)