java_基础614

1、 Object类

 是java语言中的根类,即所有类的父类

该类的方法有很多,用什么就查看JDK帮助文档进行查看

1.1、常用:

equals方法:用于比较两个对象是否相同,它其实就是使用两个对象的内存地址比较,内部使用的就是==比较运算符

class Person extends Object{
	int age ;
	//复写父类的equals方法,实现自己的比较方式
	public boolean equals(Object obj) {
		//判断当前调用equals方法的对象和传递进来的对象是否是同一个
		if(this == obj){
			return true;
		}
		//判断传递进来的对象是否是Person类型
		if(!(obj instanceof Person)){
			return false;
		}
		//将obj向下转型为Perosn引用,访问其属性
		Person p = (Person)obj;
		return this.age == p.age;
	}
}

toString方法:返回该对象的字符串表示,该字符串内容就是对象的类型+@+内存地址值
因此,需重写

class Person extends Object{
	int age ;
	//根据Person类的属性重写toString方法
	public String toString() {
		return "Person [age=" + age + "]";
	}
}

一般基本数据类型,引用类型都已重写toString方法

2、 String类

2.1、概念

字符串是一个常量,一旦创建,不能改变。

String str  = "12345";
str = "66666";

这里的不能改变是指12345一旦创建了为常量不能再改变值,但引用变量的指向为改变

2.2、字符串的定义方式有2个:

  直接=
  使用String类的构造方法
String s3 = "aaa";
String s4 = new String("aaa");
System.out.println(s3==s4);//false,引用类型数据,比较对象地址
//String类继承Object类。重写了父类的方法equals,建立了字符串自己的比较方法,判断的是字符串中每个字符是否相等
System.out.println(s3.equals(s4));//true

3、DateFormat类

3.1、日期/时间格式化子类的抽象类

//创建日期格式化对象,在获取格式化对象时可以指定风格
DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//对日期进行格式化
String str= df.format(new Date());
System.out.println(str);

3.2、把String转成Date对象

Date date=df.parse(str);

```bash
	当出现y时,会将y替换成年
	当出现M时,会将M替换成月
	当出现d时,会将d替换成日
	当出现H时,会将H替换成时
	当出现m时,会将m替换成分
	当出现s时,会将s替换成秒

4、List集合

集合:用于存储数据的容器;

集合的特点:对象封装数据,对象的个数明确使用数组、对象的个数不明确时使用集合;

4.1、概念

它是一个元素**存取有序**的集合。
它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。

4.2、List接口的常用子类:

4.2.1 ArrayList集合

ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快,
由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。

4.2.2 LinkedList集合

LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。

4.3、常用方法

	增加元素方法
	add(Object e):向集合末尾处,添加指定的元素 
	add(int index, Object e):向集合指定索引处,添加指定的元素,原有元素依次后移
	删除元素删除
	remove(Object e):将指定元素对象,从集合中删除,返回值为被删除的元素
	remove(int index):将指定索引处的元素,从集合中删除,返回值为被删除的元素
	替换元素方法
	set(int index, Object e):将指定索引处的元素,替换成指定的元素,返回值为替换前的元素
	查询元素方法
	get(int index):获取指定索引处的元素,并返回该元素

5、Set集合

5.1、概念

集合中存放不重复的元素,通过元素的equals方法,来判断是否为重复元素

5.2、Set接口常用子类

HashSet集合
此类实现Set接口,由哈希表支持(实际上是一个 HashMap集合)。
HashSet集合不能保证的迭代顺序与元素存储顺序相同。
HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()与equals()方法。

6、Map集合

6.1、概念

	Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
	Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
	Collection中的集合称为单列集合,Map中的集合称为双列集合。

6.2、Map接口常用的子类

需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
6.2.1、HashMap集合
HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。
由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
6.2.2、LinkedHashMap集合
LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构;
通过链表结构可以保证元素的存取顺序一致;
通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

6.3、Map集合遍历键找值方式

public class MapDemo1 {
	public static void main(String[] args) {
		//创建Map对象
		Map<String, String> map = new HashMap<String,String>();
		//给map中添加元素
		map.put("1", "java");
		map.put("2", c#");
        map.put("3", "算法");
		//获取Map中的所有key
		Set<String> keySet = map.keySet();
		//遍历存放所有key的Set集合
		Iterator<String> it =keySet.iterator();
		while(it.hasNext()){
			//得到每一个key
			String key = it.next();
			//通过key获取对应的value
			String value = map.get(key);
			System.out.println(key+"="+value);
		}
	}
}

6.4、Entry键值对对象

public class MapDemo2 {
	public static void main(String[] args) {
		//创建Map对象
		Map<String, String> map = new HashMap<String,String>();
		//给map中添加元素
		map.put("1", "java");
		map.put("2", c#");
        map.put("3", "算法");
		//获取Map中的所有key与value的对应关系
		Set<Map.Entry<String,String>> entrySet = map.entrySet();
		//遍历Set集合
		Iterator<Map.Entry<String,String>> it =entrySet.iterator();
		while(it.hasNext()){
			//得到每一对对应关系
			Map.Entry<String,String> entry = it.next();
			//通过每一对对应关系获取对应的key
			String key = entry.getKey();
			//通过每一对对应关系获取对应的value
			String value = entry.getValue();
			System.out.println(key+"="+value);
		}
	}
}

7、总结点

7.1、哪些集合类是线性安全的

vector:比arraylist多了个同步化机制(线程安全),效率较低,
statck:栈类,先进后出。
hashtable:比hashmap线程安全。
enumeration:枚举,相当于迭代器。

7.2、边遍历边移除 Collection 中的元素

Iterator<Integer> it = list.iterator();
	while(it.hasNext()){
	   it.remove();
	}

错误的方式为:

Iterator<Integer> it = list.iterator();
	for(Integer i : list){
	   list.remove(i)
	}

运行错误的方式的代码会报 ConcurrentModificationException 异常。因为当使用 foreach/for(Integer i : list)语句时,会自动生成一个iterator 来遍历 list,但同时 list 正在被 Iterator.remove() 修改。Java 一般不允许一个线程在遍历 Collection 时另一个线程修改它。

Iterator 的特点是只能单向遍历,但是更加安全,因为它可以确保在当前遍历的集合元素被更改的时候,就抛出 ConcurrentModificationException 异常。

7.3、实现数组和 List 之间的转换

数组转 List
	Arrays. asList(数组名) 。
List 转数组
	List 的 toArray()方法 。

7.4、Array 和 ArrayList 的区别

Array 可以存储基本数据类型和对象,ArrayList 只能存储对象。
Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。

7.5、 compareTo 和 compare的区别

都用于排序
compareTo来自java.lang包下的Comparable

public interface Comparable<T>
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
 int compareTo(T o) 
          比较此对象与指定对象的顺序。 

compare来自 java.util 包下的Comparator

int compare(T o1, T o2) 
          比较用来排序的两个参数。

8、异常

8.1、概念

Java异常时java提供的一种识别及响应错误的一致性机制。可以使得程序中的异常代码和正常业务代码分离,提高程序健壮性。

java.lang 
类 Exception
java.lang.Object
  继承者 java.lang.Throwable
      继承者 java.lang.Exception
Throwable

包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况
包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。

8.2、Error(错误)

概念

程序中无法处理的错误,表示运行应用程序中出现了严重的错误。

特点

此类错误一般表示代码运行时 JVM 出现问题,为不受检异常,非代码性错误。
通常有OutOfMemoryError:内存不足错误;StackOverflowError等。此类错误发生时,JVM 将终止线程。

8.3、Exception(异常)

概念

程序本身可以捕获并且可以处理的异常。Exception 异常又分为两类:运行时异常和编译时异常。、

运行时异常(代码有问题)

RuntimeException 类及其子类,表示 JVM 在运行期间可能出现的异常。
Java 编译器不会检查它,且由 Java 虚拟机自动抛出并捕获。如ArrayIndexOutBoundException。

受检异常
编译器不会进行检查并且不要求必须处理的异常,也就是当程序中出现异常时,即使没有try…catch…finally等方式去捕获,编译也会正常通过。

编译时异常

除了RuntimeException 类及其子类之外的异常。
Java 编译器会检查它,在代码里添加捕获语句来处理该异常。如ClassNotFoundException。

受检异常
编译器要求必须处理的异常。正确的程序在运行过程中,经常容易出现的、符合预期的异常情况。一旦发生此类异常,就必须采用某种捕获方式进行处理。除 RuntimeException 及其子类外,其他的 Exception 异常都属于受检异常。

8.4、方式

抛出异常 throw
声明异常 throws
捕获异常 try…catch…finally
如果catch中有return语句,是在finally代码执行完之后才返回。

8.5、自定义异常

class 异常名 extends Exception {
  public 异常名(){
  }
  public 异常名(String message){
    super(message);
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值