提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、今日回顾
1.《高等数学》:关于不定积分的内容
2.阅读:《第一行代码》中fragment的内容
3.英语:120个单词
二、编程的那些事
1.数组(array)
什么是数组?
描述:一种用于存储多个相同类型数据的存储模型。
数组的定义格式
- 格式一:数据类型[] 变量名 范例:int[] arr
定义了一个int类型的数组,数组名是arr
- 格式二:数据类型 变量名[] 范例:int arr[]
定义了一个int 类型的变量,变量名是arr数组
推荐使用格式一
数组的动态初始化
import java.util.Arrays;
public class ArraysDemo {
public static void main(String[] args) {
int[]arr=new int[3];
/*
左边:
int:说明数组的元素是int 类型
[]:说明这是一个数组元素
arr;数组的变量名
右边:
new 为数组申请内存空间
int:说明数组的元素是int 类型
[]:说明这是一个数组元素
3:数组长度,其实就是数组中的元素个数
*/
}
}
数组的静态初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[] 变量名=new 数据类型[]{数据1,数据2,数据3};
范例 int [] arr=new int []{1,2,3};
简化格式: 数据类型[] 变量名={数据1,数据2,数据3,……}
范例:int [] arr={1,2,3};
数组操作的两个常见小问题
●索引越界:访问了数组中不存在的索引|对应的元素,造成索引|越界问题
●空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常
●null: 空值,引用数据类型的默认值,表示不指向任何有效对象
System.out.println(arr[3]);
arr=null;
System.out.println(arr[0]);
注意:空指针异常在今后开发中是经常遇到的问题。
1.Arrays
描述:
- Arrays是一个类,该类包含用于操作数组的各种方法(如排序和搜索)。 该类还包含一个静态工厂,可以将数组视为列表。
这个类中的方法都抛出一个
NullPointerException
,如果指定的数组引用为null,除非另有说明。
代码如下(示例):
public class ArraysDemo {
public static void main(String[] args) {
int[]arr={ 24,68,80,57,13};
System.out.println("排序前:"+ Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("排序前"+Arrays.toString(arr));
}
}
其中,Arrays类,Math类,System类的构造方法都被私有化,无法被实例化。防止外界创建对象。
参考博客:
读书笔记之《effective java》----通过私有构造器强化不可实例化的能力_二狗的程序人生的博客-CSDN博客
(49条消息) util工具类中的方法为什么要用static修饰?_MyySophia的博客-CSDN博客
2.集合的体系结构
1.Collection集合
描述:
- 是单例集合的顶层接口,表示一组对象,这些对象也称为Collection的元素。
- JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现。
创建Collection集合的对象
- 多态的方式
- 具体的实现类ArrayList
注:关于多态的理解,可以参考本人写的另一篇
面向对象三大特性(多态)_天真小巫的博客-CSDN博客
Collection集合常用方法
方法名 | 说明 |
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定元素 |
void clear() | 清除集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素个数 |
集合的遍历
public class CollectionDemo01 {
public static void main(String[] args) {
//创建集合对象
Collection<String > c=new ArrayList<String>();
//添加集合元素
c.add("hello");
c.add("world");
c.add("java");
Iterator <String> it=c.iterator();
while(it.hasNext())
{
System.out.println(it.next());
// String s=it.next();
// System.out.println(s);
/*
如果拿到集合中的元素不直接输出,可用注释掉的两行代码
*/
}
}
}
3.List集合
描述:
-
有序集合(也称为序列 )。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。
-
与Set集合不同,列表通常允许重复的元素。
特点:
- 有序:存储和取出的元素顺序一直。
- 可重复:存储的元素可以重复。
public class ListDemo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
list.add("hello");
Iterator<String> it= list.iterator();
while(it.hasNext())
{
String s=it.next();
System.out.println(s);
}
}
}
增强for循环
描述:简化数组和Collection集合的遍历
- 实现Iterable接口的类允许其对象成为增强型for语句的目标
- 内部原理是一个Iterator迭代器
增强for的格式
- for(元素数据类型变量名:数组或者Collection集合){
- //在此使用变量即可,变量即元素}
public class ForDemo {
public static void main(String[] args) {
int []arr={1,2,3,4,5};
for(int a:arr)
{
System.out.println(a);
}
Collection<String > c=new ArrayList<String>();
//添加集合元素
c.add("hello");
c.add("world");
c.add("java");
for(String b:c)
{
System.out.println(b);
}
}
}
List集合遍历学生对象三种方式
public class ListDemo {
public static void main(String[] args) {
// List<String> list=new ArrayList<String>();
// list.add("hello");
// list.add("world");
// list.add("java");
// list.add("hello");
//
// Iterator<String> it= list.iterator();
// while(it.hasNext())
// {
// String s=it.next();
// System.out.println(s);
// }
List<Student> list=new ArrayList<Student>();
Student s1=new Student("你好",20);
Student s2=new Student("洗油",30);
Student s3=new Student("book",40);
list.add(s1);
list.add(s2);
list.add(s3);
//迭代器方法,集合特有的遍历方式
Iterator<Student> s=list.iterator();
while(s.hasNext())
{ Student it=s.next();
System.out.println(it.getName()+","+it.getAge());
}
//for循環方法,带有索引遍历的方式
for(int i=0;i<list.size();i++)
{
Student it= list.get(i);
System.out.println(it.getName()+","+it.getAge());
}
//增強for方式,最方便的遍历方式
for(Student student:list)
{
System.out.println(student.getName()+","+student.getAge());
}
}
}