2021-08-04 Java学习基础第五天总结
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学习基础第五天总结相关推荐
- java学习记录十五:集合二Collections、Set、Map
java学习记录十五:集合二 一.Collections工具类 一.解释 二.常用方法 1.打乱集合顺序 2.按照默认规则排序 3.按指定规则排序 4.批量添加元素 二.可变参数 一.解释 二.写法 ...
- Java学习 第十五天
Java学习 第十五天 第一章 StringBuilder类 1.1 字符串的不可变 1.2 StringBuilder概述 1.3 构造方法 1.4 两个常用方法 1.4.1 append方法 1. ...
- java学习基础联系题 使用if··else if ···else循环语句设计公交车刷卡程序
java学习基础联系题 使用if··else if ···else循环语句设计公交车刷卡程序 import java.util.Scanner; public class Bus{public sta ...
- 2021年全新Java学习路线图
第一阶段:Java语言入门到精通 学前导读: 学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础.编程基础语法,面向对象,集合.IO流.线程.并发.异常 ...
- 动力节点『lol版』Java学习路线图(五)Java框架阶段
五.框架之路-丛林沙漠巨神峰 框架技术 送君千里终须一别,拜别了厄运小姐和格雷福斯的盛情挽留,在目送了崔斯特开大消失后,ez在哈雷尔港驻足了片刻便启程前往以绪奥肯.他摸了摸纳袋(空间口袋),里面是菲兹 ...
- JAVA学习基础知识(一)JDK的安装和配置及Java的发展历史
前言 欢迎阅读本系列文章,本文主要内容为Java的发展历史,以及在电脑上如何配置Java环境.ps:这是第一次发布java语言的文章,若出现错误,望指正. 文章目录 前言 java的发展历史 Java ...
- JAVA学习-基础部分【1】
我们使用的教程是b站官方的黑马程序员教程和网上的教程,然后从中记录. 具体网址为: Java字符串的处理 (biancheng.net) 其他书籍下载: 1.rar_免费高速下载|百度网盘-分享无限制 ...
- Java学习笔记(五)--流程控制
文章目录 Java语言基础(三) 一.流程控制 1.1 复合语句 1.2 条件语句 1.2.1 if条件语句 二.switch多分支语句 三.循环语句 3.1 while 循环语句 3.2 do ·· ...
- 2021年最新Java学习路线图
本路线是学习了韩顺平老师Java学习路线图之后做的笔记,有喜欢的小伙伴可以看一下,非常全面详细 脑图地址 有需要脑图的小伙伴可以关注下面公众号,发送[路线]即可获取
最新文章
- 华为 mysql实例监控,华为云文档数据库服务DDS监控告警全新优化
- Android---如何返回上一Activity
- 原生js增加或者删除class
- 静态工厂方法与传统构造方法
- leetcode315. 计算右侧小于当前元素的个数(树状数组解法)
- 已知斜边和角度求邻边_从数学史角度看数系发展
- 工作五年再回首java---开篇
- linux安装之后缺少命令,CentOS7安装成功后缺少命令的解决办法
- unity 源码_Unity-DataFlowGraph 读源码例子Tour笔记 14
- socket 怎么设置心跳判断连接
- manjaro顶部显示网速
- 1174 哥德巴赫猜想(每日学习)
- 华为云教程(云数据库RDS)
- QT屏幕旋转与大小设置
- 磁盘类型由动态转换成基本
- 高职c语言技能试题,高职上机C语言试卷A.doc
- Linux中vgextend的含义,vgextend(8)
- QT: 程序异常结束 The process was ended forcefully.
- 七个常出口国的最新关税要求
- Google Earth Engine(GEE)——图像位移与配准!
热门文章
- 优化算法之萤火虫算法(firefly algorithm)
- python暑期实践8.8
- 全球及中国废钢市场发展机遇与十四五运行潜力调研报告2022版
- osgi php,idea搭建osgi项目开发学习
- 为什么LCC充电会卡在一个固定的电压值呢?
- 西尔维斯特吉格斯建功 曼联2-1沃特福德取三连胜
- LeetCode_589
- 腾讯2014年实习生招聘广州站offer经历(TEG-后台开发)
- 并发增量复制垃圾回收 (Concurrent and Incremental Copying GC) 和虚拟内存应用
- 移动端网页实现拨打电话功能的几种方法