Java第五天基础学习



1.集合体系
2.迭代器
3.并发修改异常
4.增强for循环
5.泛型
6.可变参数
7.正则表达式
8.数据结构


集合体系:

单列集合:

Collection接口:

LIst:接口
特点:

1.元素存取顺序一致(有序)
2.有索引
3.可重复
常用实现类:
1.ArrayList:底层是数组实现,查询快,增删慢
2.LinkedList:底层是链表实现,增删快,查询慢


Set接口:
特点:
1.元素存取顺序不一致(无序)
2.无所引
3.不重复
常用实现类:
1.HashSet
2.TreeSer


双列集合:

Map接口


源码参考:

package _02Collection和List接口;import java.util.ArrayList;
import java.util.Collection;/*目标:掌握Collection的常用方法1.Collection接口中常用方法:boolean add(E e)  往集合中添加元素boolean remove(Object o) 删除指定元素void clear() 清空集合所有元素boolean contains(Object o) 判断集合中是否包含某个元素boolean  isEmpty() 判断集合是否为空(元素个数为0)int size()获取集合的元素个数2.List接口的特有方法:void add(int index, E element)  在指定索引出添加元素E remove(int index) 根据索引删除元素,返回被删元素E set(int index, E element) 替换指定索引处的元素,返回被替换的元素E get(int index)    获取指定索引处的元素*/
public class Demo1 {public static void main(String[] args) {//coll对象只能访问Collection中的方法Collection<String> coll = new ArrayList<>();coll.add("柳岩");coll.add("刘亦菲");coll.add("王一博");//删除指定元素//System.out.println(coll.remove("王一博"));//void clear() 清空集合所有元素//coll.clear();//boolean contains(Object o) 判断集合中是否包含某个元素//System.out.println( coll.contains("柳岩") ); //调用元素类自带的equals方法,比较是否一样//boolean  isEmpty() 判断集合是否为空(元素个数为0)//System.out.println( coll.isEmpty() );//int size()获取集合的元素个数System.out.println(  coll.size() );System.out.println(coll);}
}
package _02Collection和List接口;import java.util.ArrayList;
import java.util.List;/*4.List接口的特有方法:void add(int index, E element)  在指定索引出添加元素E remove(int index) 根据索引删除元素,返回被删元素E set(int index, E element) 替换指定索引处的元素,返回被替换的元素E get(int index)    获取指定索引处的元素*/
public class Demo2 {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("柳岩");list.add("刘亦菲");list.add("王一博");//在指定索引出添加元素//list.add(0,"马云");//根据索引删除元素,返回被删元素// System.out.println(  list.remove(0));//替换指定索引处的元素,返回被替换的元素//System.out.println( list.set(2,"马云") );//获取指定索引处的元素System.out.println( list.get(0) );System.out.println( list.get(1) );System.out.println( list.get(2) );for(int i=0; i<list.size(); i++){System.out.println( list.get(i) );}System.out.println(list);}
}

迭代器:

Iterator接口常用方法:

遍历集合步骤:

Collection<String> coll = new ArrayList<>();coll.add("马云");coll.add("马化腾");coll.add("刘强东");//获取迭代器Iterator<String> itr = coll.iterator();//遍历元素while (itr.hasNext()){ //询问有没有下一个元素String name = itr.next(); //获取下一个元素System.out.println(name);}`

使用注意:

1.每次调用next()方法获取集合元素之前,先调用hasNext()方法判断是否有元素,否则使用next()时容易有异常
2.迭代遍历过程中,不能使用集合对象的add或者remove方法增删集合元素,否则会有并发修改异常
3.遍历过程中,如果需要删除元素,可以使用迭代器自身的remove方法。

源代码参考:

package _03Iterator迭代器遍历集合;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;/*目标:掌握迭代器遍历元素的步骤小结:迭代器遍历元素的步骤1.获取迭代器对象:   集合对象.iterator();2.循环判断是否有下一个元素: 迭代器对象.hasNext()3.如果有元素,调用 next() 方法,取出元素。*/
public class Demo1 {public static void main(String[] args) {Collection<String> coll = new ArrayList<>();coll.add("马云");coll.add("马化腾");coll.add("李彦宏");coll.add("刘强东");//获取迭代器Iterator<String> itr = coll.iterator();//遍历元素while (itr.hasNext()){ //询问有没有下一个元素String name = itr.next(); //获取下一个元素System.out.println(name);}//System.out.println(itr.next()); //NoSuchElementException 遍历结束,不能再次获取元素//如果还想继续遍历,需要重新获取新的迭代器对象Iterator<String> itr2 = coll.iterator();while (itr2.hasNext()){ //询问有没有下一个元素String name = itr2.next(); //获取下一个元素System.out.println(name);}}
}

并发修改异常

package _04并发修改异常_了解;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;/*目标:了解迭代器遍历的常见问题1.什么情况下会出现并发修改异常?ConcurrentModificationException当使用迭代器遍历时,使用了集合对象增删元素,就会产生并发修改异常。2.如何避免并发修改异常?统一操作数据的对象。(使用迭代器遍历,并且使用迭代器删除)*/
public class Demo1 {public static void main(String[] args) {Collection<Integer> list = new ArrayList<>();list.add(11);list.add(12);list.add(13);list.add(14);list.add(15);//删除集合中的偶数元素//迭代器遍历//使用迭代器对象遍历元素Iterator<Integer> itr = list.iterator();while ((itr.hasNext())){Integer num = itr.next();if(num%2==0){// list.remove(num); //使用集合对象删除元素 并发修改异常itr.remove();}}System.out.println(list);}
}

增强for循环:

格式:
for(元素类型 变量名:数组或者集合){
}
底层原理:
增强for底层是迭代器,作用是简化迭代器的语法
使用注意:
使用增强for遍历集合过程中,不能增删集合元素,否则会有并发修改异常

源码参考1:

package _05增强for循环;import java.util.ArrayList;
import java.util.Collection;/*目标:掌握增强for循环的使用1.格式:for(元素类型  变量名 : 数组或者集合){}2.原理:底层就是迭代器3.使用注意:在遍历过程无法增删元素,否则会有并发修改异常*/
public class Demo1 {public static void main(String[] args) {Collection<String> coll = new ArrayList<>();coll.add("马云");coll.add("马化腾");coll.add("李彦宏");coll.add("刘强东");//使用增强for遍历//在遍历过程无法增删元素,否则会有并发修改异常for (String name : coll) {System.out.println(name);//coll.remove("马云"); //此处运行会报并发修改异常}//遍历数组int[] arr = {11, 22, 33};for(int a : arr){System.out.println(a);}}}

源码参考2:

package _05增强for循环;import java.util.ArrayList;
import java.util.Collection;/*目标:掌握增强for循环的使用1.格式:for(元素类型  变量名 : 数组或者集合){}2.原理:底层就是迭代器3.使用注意:在遍历过程无法增删元素,否则会有并发修改异常*/
public class Demo2 {public static void main(String[] args) {Collection<String> coll = new ArrayList<>();coll.add("马云");coll.add("马化腾");coll.add("李彦宏");coll.add("刘强东");for (String name : coll) {System.out.println(name);//coll.remove("马云");}}/*反编译代码:public static void main(String args[]){Collection coll = new ArrayList();coll.add("马云");coll.add("马化腾");coll.add("李彦宏");coll.add("刘强东");String name;for (Iterator iterator = coll.iterator(); iterator.hasNext(); System.out.println(name)){name = (String)iterator.next();}执行步骤:Iterator iterator = coll.iterator();iterator.hasNext();name = (String)iterator.next();System.out.println(name)}
*/
}

泛型:

泛型类:
public class 类名<类型标记>{
}
创建对象时,确定泛型类的泛型类型
泛型接口:
public interface 接口名<泛型标记>{
}
实现接口时,确定接口的泛型类型
泛型方法:
修饰符 <“T”> 返回值类型 方法名(T t){
}
调用方法时,传入实参时确定泛型类型

泛型通配符?:
当使用泛型的时候,无法确定泛型的具体类型时,可以使用通配符?来表示某一种类型
泛型上限:
? extends XX
?匹配的类型只能是XX或者XX的子类
泛型下限:
?super XX
?匹配的类型只能是XX或者XX的父类

源码参考1:

package _08泛型的概述;import java.util.ArrayList;
import java.util.Map;/*目标:了解泛型的概述和好处1.泛型的概述泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制。2.泛型的好处把运行期间的问题提前到了编译期间。避免了强制类型转换。*/
public class Demo1 {public static void main(String[] args) {//<String> 作用规范集合容器的元素的类型 ,约束集合类型ArrayList<String> array = new ArrayList<>();array.add("java");array.add("c++");//array.add(11);String s = array.get(0);/*ArrayList array = new ArrayList();array.add(11);array.add("java");array.add("c++");array.add(3.14);array.add(true);//获取数据时,需要进行类型转换String o = (String)array.get(0);System.out.println(o.length());*/}}

源码参考2:

package _09泛型类的定义和使用;/*目标:掌握泛型类的定义格式泛型类定义格式:public class 类名<类型标记>{}类型标记可以写成 T E  K  V  A M 等(一个大写字母)泛型类使用:创建对象时,确定泛型类的泛型类型*/
public class Demo1 {public static void main(String[] args) {//创建泛型类的对象Generic<String> g = new Generic<>();g.setValue("java");String value = g.getValue();System.out.println("value = " + value);Generic<Integer> g2 = new Generic<>();g2.setValue(100);Integer a = g2.getValue();System.out.println(a);}
}
package _09泛型类的定义和使用;//定义了泛型类
//T 表示某一个引用数据类型,在类中,可以使用数据类型的地方,就可以使用T代替
public class Generic<T> {private T value;public T getValue() {return value;}public void setValue(T value) {this.value = value;}
}

源码参考3:

package _10泛型接口的定义和使用;/*目标:掌握泛型接口的定义格式泛型接口定义格式:public interface 接口名<泛型标记>{}泛型接口使用:实现接口时,在实现类中确定接口的泛型类型*/
public class Demo1 {public static void main(String[] args) {}}
package _10泛型接口的定义和使用;public class My<T> implements MyList<T>{@Overridepublic void add(T t) {}@Overridepublic T get(int index) {return null;}
}
package _10泛型接口的定义和使用;public class MyArrayList implements MyList<String>{@Overridepublic void add(String s) {}@Overridepublic String get(int index) {return null;}}
package _10泛型接口的定义和使用;public class MyLinkedList implements MyList<Integer> {@Overridepublic void add(Integer integer) {}@Overridepublic Integer get(int index) {return null;}
}
package _10泛型接口的定义和使用;//定义泛型接口
public interface MyList<E> {void add(E e);E get(int index);}

源码参考4:

package _11泛型方法的定义和使用;/*目标:掌握泛型方法的定义格式泛型方法定义格式:修饰符  <T> 返回值类型 方法名(T t){}泛型方法使用:调用方法时,传入实参时确定泛型类型*/
public class Demo1 {public static void main(String[] args) {//泛型方法的参数必须是引用类型Integer[] arr = {11, 22, 33};printArray(arr);Double[] arr2 = {1.1, 2.2, 3.3};printArray(arr2);}//定义泛型方法public static <T> void printArray(T[] arr) {System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {System.out.print(arr[i]);} else {System.out.print(arr[i] + ", ");}}System.out.println("]");}/*//数组的格式化打印public static void printArray(double[] arr){System.out.print("[");for (int i = 0; i < arr.length; i++) {if(i==arr.length-1){System.out.print(arr[i]);}else {System.out.print(arr[i]+", ");}}System.out.println("]");}//数组的格式化打印public static void printArray(int[] arr){System.out.print("[");for (int i = 0; i < arr.length; i++) {if(i==arr.length-1){System.out.print(arr[i]);}else {System.out.print(arr[i]+", ");}}System.out.println("]");}*/}

泛型通配符参考源码:

package _12泛型通配符和泛型上下限.应用举例;//汽车父类
public class Car {}
package _12泛型通配符和泛型上下限.应用举例;//奥迪汽车
public class Audi extends Car{}
package _12泛型通配符和泛型上下限.应用举例;//吉普汽车
public class Jeep extends Car{}
package _12泛型通配符和泛型上下限.应用举例;import java.util.ArrayList;//qq飞车游戏
public class QQPlay {public static void main(String[] args) {ArrayList<Audi> audis = new ArrayList<>();audis.add(new Audi());audis.add(new Audi());play(audis);ArrayList<Jeep> jeeps = new ArrayList<>();jeeps.add(new Jeep());jeeps.add(new Jeep());play(jeeps);ArrayList<Car> cars = new ArrayList<>();cars.add(new Car());cars.add(new Car());play(cars);/* ArrayList<Dog> dogs = new ArrayList<>();play(dogs);ArrayList<Object> objs = new ArrayList<>();play(objs);*/}//定义方法,可以接收任意汽车集合(泛型没有重载和多态)//ArrayList<?> 表示 ArrayList集合可以接收任意类型/* public static void play(ArrayList<?> list){}*///为了限制通配符能匹配的范围,需要使用上下限//? extends Car :泛型的类型只能Car或者Car的子类(上限)public static void play(ArrayList<? extends Car> list){}//? super Car :泛型的类型只能是Car或者Car的父类(下限)/*public static void play(ArrayList<? super Car> list){}*/}class Dog{}


可变参数

使用场景
当方法形参的类型确定,而个数不确定时,可以使用可变参数(…)表示。
格式:
修饰符 返回值类型 方法名(参数类型…变量名){
}
原理:
可变参数的本质是数组。
使用注意:
一个方法中只能有一个可变参数。
当方法有多个参数时,可变参数必须时最后一个人参数

参考源码1:

package _13可变参数;/*目标:掌握可变参数的使用可变参数格式:修饰符  返回值类型  方法名(参数类型 ... 变量名){}原理:可变参数底层就是数组*/
public class Demo1 {public static void main(String[] args) {//如果参数是可变参,传参时参数个数可以变化System.out.println(getSum());System.out.println(getSum(1));System.out.println(getSum(1, 2));System.out.println(getSum(1, 2, 3));/*int[] arr = {1};System.out.println(getSum(arr));int[] arr2 = {1,2};System.out.println(getSum(arr2));int[] arr3 = {};System.out.println(getSum(arr3));*/}//可变参数底层就是数组public static int getSum(int... arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum+=arr[i];}return sum;}/* public static int getSum(int[] arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum+=arr[i];}return sum;}*//*public static int getSum(int a, int b){return a+b;}public static int getSum(int a, int b, int c){return a+b+c;}public static int getSum(int[] arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum+=arr[i];}return sum;}*/}

参考源码2:

package _13可变参数;import java.util.Collections;/*可变参数使用注意:1.一个方法只能定义一个可变参数。2.如果方法中有多个参数,可变参数要放到最后。*/
public class Demo2 {public static void main(String[] args) {getSum(1,2,3);}/*public static void getSum(int... arr, double ... arr2){}*/public static void getSum( int a, int... arr) {}}

正则表达式:

作用:
正则表达式是一个强大的字符串处理工具,是用于匹配字符串的模板,可以对字符串进行格式化校验,查找,提取,替换等操作。

语法:
范围匹配:
常用写法:

[abz]:匹配abc中任意一个字符。
[a-z]:匹配小写字母a-z中的一个。
[A-Z]:匹配大写字母A-Z中的一个。
[0-9]:匹配数字0-9中的一个。
组合匹配:
[a-zA-Z0-9]:匹配a-z或者A-Z或者0-9之间的任意一个字符。
[a-dm-p]:匹配a-d或者m-p之间的任意一个字符。
排除匹配:
[^abc]:匹配除a、b、c之外的任意一个字符
[^a-z]:匹配除小写字母外的任意一个字符。

预定义字符:
“.”:匹配一个任意字符
“\d”:匹配一个数字字符,相当于[0-9]
“\D”:匹配一个非数字,相当于[^0-9]
“\s”:匹配一个空白字符
“\S”:匹配一个非空白字符
“\w”:匹配一个单词字符,包括大小写字母,数字,下划线,相当于[a-zA-Z0-9_]
“\W”:匹配一个非单词字符

数量词匹配
?0或1次
‘*’ 0次或者多次(任意次)
‘+’ 1次或者多次
{n} 重复n次
{n,} 重复n次以上(至少n次)
{n,m} 重复n到m次(包括n和m)

逻辑匹配符:
&& 并且(交集)
| :或者(并集)

分组:
()

参考源码1:

package _14正则表达式_演示;/*
普通方式校验字符串:判断用户输入的身份证号码是否合法。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X。*/
public class RegexTest1 {public static boolean checkId(String id){if(id==null){return false;}//号码为18位.如果不是18位,返回falseif(id.length()!=18){return false;}//不能以数字0开头,如果以数字0开头,返回falseif(id.startsWith("0")){return false;}//前17位只可以是数字,如果前17位中有不是数字的,返回falsefor(int i=0; i<17; i++){char ch = id.charAt(i);if(ch>'9' || ch<'0'){return false;}}//最后一位可以是数字或者大写字母Xchar last = id.charAt(17);if(last=='X' || (last>='0' && last<='9')){return true;}else {return false;}}//测试public static void main(String[] args) {System.out.println( checkId("445221199909091234") );System.out.println( checkId("44522119990909123X") );System.out.println( checkId("44522119990909123") );System.out.println( checkId("4452211999090912345") );System.out.println( checkId("045221199909091234") );System.out.println( checkId("4452A1199909091234") );System.out.println( checkId("44522119990909123x") );}}
package _14正则表达式_演示;/*
正则表达式校验字符串:判断用户输入的身份证号码是否合法。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X。*/
public class RegexTest2 {public static boolean checkId(String id){if(id!=null){// 规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X。return id.matches("[1-9]\\d{16}[0-9X]");}else {return false;}}//测试public static void main(String[] args) {System.out.println( checkId("445221199909091234") );System.out.println( checkId("44522119990909123X") );System.out.println( checkId("44522119990909123") );System.out.println( checkId("4452211999090912345") );System.out.println( checkId("045221199909091234") );System.out.println( checkId("4452A1199909091234") );System.out.println( checkId("44522119990909123x") );}
}

源码2:

package _15正则表达式语法_了解;/*1.范围匹配 [][abc]:匹配abc中任意一个字符。[a-z]:匹配小写字母a-z中的一个。[A-Z]:匹配大写字母A-Z中的一个。[0-9]:匹配数字0-9中的一个。组合:[a-zA-Z0-9]:匹配a-z或者A-Z或者0-9之间的任意一个字符。[a-dm-p]: 匹配a-d或m-p之间的任意一个字符。排除:[^abc]:匹配除a、b、c之外的任意一个字符。[^a-z]:匹配除小写字母外的任意一个字符。*/
public class Demo1 {public static void main(String[] args) {//字符串对象.matches("正则表达式") ,符合正则表达式规则,返回true//[abc]:匹配abc中任意一个字符。System.out.println( "a".matches("[abc]") );System.out.println( "b".matches("[abc]") );System.out.println( "c".matches("[abc]") );System.out.println( "ab".matches("[abc]b") ); //字符串的第一个字符可以是a,b,c,第二个字符只能是b//匹配abc的任意组合  acb  bca aaa  bbb  abb ...System.out.println( "acb".matches("[abc][abc][abc]") );System.out.println( "bbb".matches("[abc][abc][abc]") );//[a-z]:匹配小写字母a-z中的一个。System.out.println( "e".matches("[a-z]") );//[^abc]:匹配除a、b、c之外的任意一个字符。System.out.println( "我".matches("[^abc]") );}}

参考源码3:

package _15正则表达式语法_了解;/*2.预定义字符"." : 匹配一个任意字符"\d": 匹配一个数字字符,相当于[0-9]"\D": 匹配一个非数字,相当于[^0-9]"\s": 匹配一个空白字符"\S": 匹配一个非空白字符"\w": 匹配一个单词字符,包括大小写字母,数字,下划线,相当于[a-zA-Z0-9_]"\W": 匹配一个非单词字符*/
public class Demo2 {public static void main(String[] args) {//匹配长度为4的数字验证码System.out.println("1234".matches("\\d\\d\\d\\d"));System.out.println("0495".matches("\\d\\d\\d\\d"));//匹配一个三位数 (100~999)System.out.println("100".matches("[1-9]\\d\\d"));System.out.println("999".matches("[1-9]\\d\\d"));// "\s": 匹配一个空白字符,只能匹配一个空白System.out.println(" ".matches("\\s"));//"." : 匹配一个任意字符System.out.println(" ".matches("."));System.out.println("中".matches("."));System.out.println("a".matches("."));System.out.println("9".matches("."));//只是单独匹配 . 这个符号System.out.println(".".matches("\\.")); //trueSystem.out.println("!".matches("\\.")); //false}
}

参考源码4:

package _15正则表达式语法_了解;/*3.数量词(限定符)?   0次或1次*   0次或多次 (任意次)+   1次或多次{n}    重复n次{n,}   重复n次以上 (至少n次){n,m}  重复n到m次(包括n和m)*/
public class Demo3 {public static void main(String[] args) {//匹配长度为4的数字验证码System.out.println("1234".matches("\\d{4}"));//匹配密码 5-8位的密码 (密码只能是单词字符)System.out.println("34rrA_".matches("\\w{5,8}"));System.out.println("12345@".matches("\\w{5,8}"));//衣服尺码 比如:L XL  XXL  XXXLSystem.out.println("L".matches("X*L")); //X可以出现任意次,L只能固定System.out.println("XL".matches("X*L")); //X可以出现任意次,L只能固定System.out.println("XXXL".matches("X*L")); //X可以出现任意次,L只能固定//匹配任意一个英文单词,英文单词全部是小写字母就行//a  is  out  love  helloSystem.out.println("a".matches("[a-z]+"));System.out.println("love".matches("[a-z]+"));}}

参考源码5:

package _15正则表达式语法_了解;/*4.逻辑匹配&& :并且(交集)|  :或者(并集)5.括号分组 ()正则表达式中用小括号()来做分组,也就是括号中的内容作为一个整体。*/
public class Demo4 {public static void main(String[] args) {//逻辑匹配://匹配除去tmd外任意一个小写字母System.out.println("m".matches("[[a-z]&&[^tmd]]"));System.out.println("h".matches("[[a-z]&&[^tmd]]"));System.out.println("A".matches("[[a-z]&&[^tmd]]"));//匹配邮箱后缀 com 或者 cn 或者 orgSystem.out.println("cn".matches("com|cn|org"));System.out.println("org".matches("com|cn|org"));System.out.println("edu".matches("com|cn|org"));//( )分组//匹配 over! 字符串出现3次System.out.println("over!over!over!".matches("over!{3}")); //false,因为正则表达式匹配over!!!System.out.println("over!over!over!".matches("(over!){3}")); //true}
}

练习邮箱格式源码:

package _16练习_邮箱格式校验;/*目标:使用正则表达式完成邮箱格式校验要求:邮箱地址必须是6~18个字符,可使用字母,数字,下划线,需要以字母开头。邮箱后缀支持 @163.com 或者 @126.com 或者 @yeah.net。*/
public class Demo1 {public static void main(String[] args) {String email = "itheima@yeah.net";boolean result = email.matches("[a-zA-Z]\\w{5,17}@(163\\.com|126\\.com|yeah\\.net)");System.out.println(result);}
}

表达式拓展源码:

package _16练习_邮箱格式校验;import java.util.Arrays;/*String replaceAll(String regex, String replacement)将该字符串中所有匹配正则表达式的内容替换成新的字符串,并返回替换后的新的字符串。String[] split(String regex)根据匹配规则,把字符串分割成多个子串。*/
public class Demo2 {public static void main(String[] args) {//replaceAll(正则表达式, 新的字符串)String date = "2021-8-4";//将日期换成2021/8/4String s = date.replaceAll("-", "/");System.out.println(s);/*String word =" 我   爱       java ";//把字符串的所有空格去掉String s1 = word.replaceAll(" ", "");System.out.println(s1);*/String word ="我   爱       java";//把字符串中间的空格换成一个空格 "我 爱 java"String s1 = word.replaceAll(" +", " ");System.out.println(s1);//split(String regex)String date1 = "2021-8-4";//将date1字符串切割出年,月,日String[] arr = date1.split("-");System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);String[] arr2 = word.split(" +");System.out.println(Arrays.toString(arr2));}
}

数据结构

栈:先进后厨
队列:先进先出
数组:查询快,增删慢
链表:增删快,查询慢

package _01常见数据结构_了解;/*目标: 了解常见数据结构的特点小结:栈结构特点先进后出队列结构特点先进先出数组结构特点查询快,增删慢(有索引,长度固定)链表结构特点增删快,查询慢(有节点,节点能指向相邻元素)*/
public class Demo1 {}

今天就学到这里
小结:

2021-08-04 Java学习基础第五天总结相关推荐

  1. java学习记录十五:集合二Collections、Set、Map

    java学习记录十五:集合二 一.Collections工具类 一.解释 二.常用方法 1.打乱集合顺序 2.按照默认规则排序 3.按指定规则排序 4.批量添加元素 二.可变参数 一.解释 二.写法 ...

  2. Java学习 第十五天

    Java学习 第十五天 第一章 StringBuilder类 1.1 字符串的不可变 1.2 StringBuilder概述 1.3 构造方法 1.4 两个常用方法 1.4.1 append方法 1. ...

  3. java学习基础联系题 使用if··else if ···else循环语句设计公交车刷卡程序

    java学习基础联系题 使用if··else if ···else循环语句设计公交车刷卡程序 import java.util.Scanner; public class Bus{public sta ...

  4. 2021年全新Java学习路线图

    第一阶段:Java语言入门到精通 学前导读: 学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础.编程基础语法,面向对象,集合.IO流.线程.并发.异常 ...

  5. 动力节点『lol版』Java学习路线图(五)Java框架阶段

    五.框架之路-丛林沙漠巨神峰 框架技术 送君千里终须一别,拜别了厄运小姐和格雷福斯的盛情挽留,在目送了崔斯特开大消失后,ez在哈雷尔港驻足了片刻便启程前往以绪奥肯.他摸了摸纳袋(空间口袋),里面是菲兹 ...

  6. JAVA学习基础知识(一)JDK的安装和配置及Java的发展历史

    前言 欢迎阅读本系列文章,本文主要内容为Java的发展历史,以及在电脑上如何配置Java环境.ps:这是第一次发布java语言的文章,若出现错误,望指正. 文章目录 前言 java的发展历史 Java ...

  7. JAVA学习-基础部分【1】

    我们使用的教程是b站官方的黑马程序员教程和网上的教程,然后从中记录. 具体网址为: Java字符串的处理 (biancheng.net) 其他书籍下载: 1.rar_免费高速下载|百度网盘-分享无限制 ...

  8. Java学习笔记(五)--流程控制

    文章目录 Java语言基础(三) 一.流程控制 1.1 复合语句 1.2 条件语句 1.2.1 if条件语句 二.switch多分支语句 三.循环语句 3.1 while 循环语句 3.2 do ·· ...

  9. 2021年最新Java学习路线图

    本路线是学习了韩顺平老师Java学习路线图之后做的笔记,有喜欢的小伙伴可以看一下,非常全面详细 脑图地址 有需要脑图的小伙伴可以关注下面公众号,发送[路线]即可获取

最新文章

  1. 华为 mysql实例监控,华为云文档数据库服务DDS监控告警全新优化
  2. Android---如何返回上一Activity
  3. 原生js增加或者删除class
  4. 静态工厂方法与传统构造方法
  5. leetcode315. 计算右侧小于当前元素的个数(树状数组解法)
  6. 已知斜边和角度求邻边_从数学史角度看数系发展
  7. 工作五年再回首java---开篇
  8. linux安装之后缺少命令,CentOS7安装成功后缺少命令的解决办法
  9. unity 源码_Unity-DataFlowGraph 读源码例子Tour笔记 14
  10. socket 怎么设置心跳判断连接
  11. manjaro顶部显示网速
  12. 1174 哥德巴赫猜想(每日学习)
  13. 华为云教程(云数据库RDS)
  14. QT屏幕旋转与大小设置
  15. 磁盘类型由动态转换成基本
  16. 高职c语言技能试题,高职上机C语言试卷A.doc
  17. Linux中vgextend的含义,vgextend(8)
  18. QT: 程序异常结束 The process was ended forcefully.
  19. 七个常出口国的最新关税要求
  20. Google Earth Engine(GEE)——图像位移与配准!

热门文章

  1. 优化算法之萤火虫算法(firefly algorithm)
  2. python暑期实践8.8
  3. 全球及中国废钢市场发展机遇与十四五运行潜力调研报告2022版
  4. osgi php,idea搭建osgi项目开发学习
  5. 为什么LCC充电会卡在一个固定的电压值呢?
  6. 西尔维斯特吉格斯建功 曼联2-1沃特福德取三连胜
  7. LeetCode_589
  8. 腾讯2014年实习生招聘广州站offer经历(TEG-后台开发)
  9. 并发增量复制垃圾回收 (Concurrent and Incremental Copying GC) 和虚拟内存应用
  10. 移动端网页实现拨打电话功能的几种方法