一、java包
一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问保护和命名空间管理的功能。
(一)Java 中的包:
java.lang-打包基础的类 java.io-包含输入输出功能的函数
(二)创建包
创建包的时候要为包取一个合适的名字 如果其他的一个源文件包含了这个包提供的类、接口、枚举、或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头 包声明应该在源文件的第一行,每个源文件智能有一个包声明,这个文件的,诶个类型都应用于它 如果一个源文件中没有使用包声明,南无其中的类,函数,枚举。注释等将被放在一个无名的包中
package com.company;
(三)import关键字
为了能够使用某一个包的成员,我们应该在java中明确导入包 在java中import关键字用于引入其他包中的类。接口。静态成员。它允许你在代码中直接使用其他包中的类,而不需要完整的指定类的包名 import package1[.package2…].(classname|*);
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import 语句引入其他包中的类 在一个包中想引用本包中的另一个类,那么包名可以省略 这样就可以在源文件中直接使用类的方法、变量、或常量 *代表引入整个包
二、反射
(一)反射
java反射是一个强大的特性,它允许程序在运行时查询,访问和修改类、接口、字段和方法的信息。反射提供了一种动态的操作类的能力,这在很多框架和库中被广泛使用 反射API java反射API提供了一系列的类和接口来操作对象,主要的类包括: java.lang.Class:表示类的对象,提供了方法来获取类的字段、方法、构造函数等 java.lang.reflect.Field:表示类的字段。提供了访问和修改的能力 java.lang.reflect.Method:表示类的方法,提供了调用方法的能力 java.lang.reflect.Constructor:表示类的构造函数,提供了创造对象的能力
(二)工作流程
1、获取class对象:首先获取目标的class对象 2、获取成员信息:通过class对象,可以获取类的字段、方法、构造函数等信息 3、操作对象:通过API反射可以读取和修改字段的值、调用方法以及创造对象
三、java数据结构
(一)数组
数组是一种基本的数据结构,可以存储固定大小的相同类型元素 int []arr=new int[5]; 特点:固定大小,存储相同类型元素 优点:随机访问元素效率高 缺点:大小固定,插入和删除元素相对较慢
(二)列表
列表:Java 提供了多种列表实现,如 ArrayList 和 LinkedList。
List<String> arrayList = new ArrayList<>(); List<Integer> linkedList = new LinkedList<>();
1、ArrayList:
特点:动态数组可变大小 优点:高效的随机访问和快速尾部插入 缺点:中间插入和删除比较慢
2、LinkedList:
特点:双向链表,元素之间通过指针连接 优点:插入和删除元素效率高,迭代器性能好 缺点:随机访问相对较慢
(三)集合Sets
sets用于存储不重复的元素,常见的实现有hashset和Treeset
(1)hashset
特点:无序集合,基于HashMap实现 优点:高效的查找和插入操作 缺点;不保证等顺序
(2)Treeset
特点:有序集合,底层基于红黑树实现,不允许重复元素 优点:提供自动排序功能,适用于需要按照顺序存储元素的场景 缺点:性能相对较差,不允许插入NULL
(四)映射(map)
用于存储键值对,常见的实现有 HashMap 和 TreeMap。 Map<String, Integer> hashMap = new HashMap<>(); Map<String, Integer> treeMap = new TreeMap<>();
(1)HashMap:
特点: 基于哈希表实现的键值对存储结构。 优点: 高效的查找、插入和删除操作。 缺点: 无序,不保证顺序。
(2)TreeMap:
特点: 基于红黑树实现的有序键值对存储结构。 优点: 有序,支持按照键的顺序遍历。 缺点: 插入和删除相对较慢。
(五)栈(Stack)
栈(Stack)是一种线性数据结构,它按照后进先出(Last In, First Out,LIFO)的原则管理元素。 在栈中,新元素被添加到栈的顶部,而只能从栈的顶部移除元素。 这就意味着最后添加的元素是第一个被移除的。
(六)队列(Queue)
队列(Queue)遵循先进先出(FIFO)原则,常见的实现有 LinkedList 和 PriorityQueue。
(七)堆(Heap)
堆(Heap)优先队列的基础,可以实现最大堆和最小堆。
(八)树(Trees)
Java 提供了 TreeNode 类型,可以用于构建二叉树等数据结构。
(九)图(Graphs)
图的表示通常需要自定义数据结构或使用图库,Java 没有内建的图类。
四、ArrayList
是一个可以动态修改的数组,与普通数组的区别就是它没有固定的限制,我们可以增加或者删除元素 arraylist类位于java.util包中,使用前必须要引入它, import java.util.ArrayList; ArrayList<E>objectname=new ArrayList<>(); E:用于设置objectname数据类型,只能为引用数据类型 objectname:对象名
//创建动态数组
ArrayList<Integer> sites = new ArrayList<Integer>();
//向数组中添加元素
sites.add(1);
sites.add(3);
sites.add(11);
sites.add(2);
System.out.println(sites);
//从数组中获取数据 使用get方法
System.out.println(sites.get(0));
//从数组中修改元素 使用set方法
sites.set(0,0);//第一个元素为索引位置,第二个元素为修改的值
System.out.println(sites);
//删除元素 使用remove方法
sites.remove(0);//删除下标为0的元素
System.out.println(sites);
//计算数组大小 使用size()方法
System.out.println(sites.size());
//迭代数组列表
//for循环
for(int i=0;i<sites.size();i++)
{
System.out.println(sites.get(i));
}
//for增强
for(int i:sites)
{
System.out.println(i);
}
//ArrayList排序
// Collections类排序 使用sort() 对字符或者数字列表进行排序,从小到大
Collections.sort(sites);
System.out.println(sites);
五、链表(LinkedList)
//链表
//创建一个链表、
LinkedList<String>sites01 = new LinkedList<String>();
//写入数据并输出
sites01.add("001a");
sites01.add("002b");
sites01.add("003c");
sites01.add("004d");
//输出链表
System.out.println(sites01);
//头插
sites01.addFirst("000q");
//尾插
sites01.addLast("999p");
System.out.println(sites01);
//删除头
sites01.removeFirst();
//删除尾
sites01.removeLast();
System.out.println(sites01);
//获取头
System.out.println(sites01.getFirst());
//获取尾
System.out.println(sites01.getLast());
sites01.set(1, "99999");
System.out.println(sites01);
//迭代
for(int i=0;i<sites01.size();i++)
{
System.out.println(sites01.get(i));
}
//for增强迭代
for(String x:sites01)
{
System.out.println(x);
}
标签:java07,java,sites,sites01,System,println,out
From: https://blog.csdn.net/zyq2217330101/article/details/141923824