常用类

Object类

protected Object clone() throws CloneNotSupportedException

  • 克隆方法:创建并返回此对象的一个副本
  • Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。
  • protected void finalize()throws Throwable(跟垃圾回收器有关系)
  • 垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

Scanner类

文本扫描器:Scanner (java.util.Scanner)

  • 之前的使用:
  • 1)导包
  • 2)创建键盘录入对象:
  • Scanner sc = new Scanner(System.in) ;
    
  • 构造方法:
  •  public Scanner(InputStream source)
    
  • 形式参数:
  • 抽象类:java.io.InputStream:字节输入流(用来读取字节数)
  • 如果方法的形式参数是一个抽象类,那么需要传递该抽象类的子类对象
  • System.in:System:是jdk提供的一类
  • public static final InputStream in:成员变量 :标准输入流
  • public static final PrintStream out:标准输出流

Scanner类中提供了一些判断功能:

  • public boolean hasNextXXX():判断当前是否是执行XXX类型
  •          int,short,float,double...
    
  • public XXX nextXXX() :接收指定XXX类型
  •  举例:
    
  •          public boolean  haxNextInt() :判断接收的类型是否是int类型
    
  •          public int nextInt()  : 接收指定的int类型的数据
    
  •          public boolean  haxNextLine():判断接收的数据是否是一个String类型
    
  •          public String nextLine() : 接收一个String类型
    

Scanenr:键盘录入的细节问题

  • 先录入int类型,在录入String类型 (nextLine())
  • 问题:
  • 当前字符串录入数据:值就被漏掉了,原因就是回车符号(本身字符串)
  • 在下一次录入String类型前,再次创建一个Scanner类型对象

String类

常用类之String

  • String 类代表字符串
  • 字符串是常量;它们的值在创建之后不能更改(常量的地址值)
  • String类是一个特殊的引用类型
  • String类型如果作为参数传递,形式参的改变不会影响实际参数
  • (跟基本类型作为参数的效果一样)
  • null 和 ""的区别: null:对象为空 " ":空字符序列 “” +任何数据

String类的构造方法

  • public String() :无参构造方法:创建一个字符串对象
  • public String(byte[] bytes):使用平台的默认编码集 :将字节数组---->构造出String类型
  • public String(byte[] bytes, int offset, int length):将字节数组的一部分转换成字符串
  • 参数1:传递的实际字节数组对象
  • 参数2:从哪个位置开始
  • 参数3:指定长度
  • public String(char[] value):将字符数组—构造成一个字符串对象
  • public String(char[] value,int offset,int count) :将字符数组一部分转换成字符串
  • 参数1:传递的实际字符数组对象
  • 参数2:从哪个位置开始
  • 参数3:指定长度
  • public String(String original):将一个字符串值存储进来,创建一个字符串对象

String类型的判断功能

  • public boolean equals(Object anObject):比较两个字符串内容是否相同
  • public boolean equalsIgnoreCase(String anotherString):不区分大小写比较
  • public boolean startsWith(String prefix):判断是否以指定的子串开头
  • public boolean endsWith(String suffix):判断是否以指定的子串结尾
  • public boolean isEmpty():判断字符串是否为空

tring类的获取功能:

  • int length():获取字符串长度
  • public char charAt(int index):获取指定索引处的字符
  • public String concat(String str):字符串拼接功能:使用当前字符串和指定str字符串进行拼接
  • public int indexOf(int ch):获取指定字符在此字符串中第一次出现索引值
  • public int indexOf(String str):获取指定字符串在此字符串中第一次出现索引值

String类的分割功能

  • public String[] split(String regex):通过指定的字符串进行分割,返回值字符串数组

String类转换功能:

  • public char[] toCharArray():将字符串转换成字符数组
  • public byte[] getBytes() :将字符串----变成字节数组 (过程:编码)
  • public static String valueOf(XXX xx):可以将任何类型的数据转换成String
  • public String toUpperCase():将此字符串转换成大写
  • public String toLowerCase():将此字符串转换成小写

String类的截取功能

  • public String substring(int beginIndex):从指定位置开始截取,默认截取到末尾
  • public String substring(int beginIndex,int endIndex)
  • 从指定位置开始截取,到指定位置结束,但是包含beginIndex,不包含endIndex索引(包前不包后)

替换功能

  • public String replace(char oldChar,char newChar):将以前的字符用心的字符替换掉
  • public String replace(String oldStr,char newStr):将以前的字符用心的字符替换掉
  • 去除两端空格 public String trim()
  • 按照字段顺序比较! :如何比较的
  • public int compareTo(String anotherString)

StringBuffer类

StringBuffer:线程安全的可变字符序列 ,提供字符串缓冲区

  • 多线程有关系!

  • 进程:—>打开任务管理器,一些客户后台!

  • 线程—相当于开启进程后的某一个任务! 360软件

  • 线程安全 ---->同步的----->执行效率低 !

  • 举例:银行的网站

  • 医院网站…

  • 线程不安全---->不同步的---->执行效率高!

  • 举例:

  • 论坛网站,部分游戏网站…

  • 两个获取功能

  • int length():获取长度(缓冲区中字符数)

  • public int capacity():获取缓冲区的容量大小

  • StringBuffer的构造方法:

  • 1)public StringBuffer():空参构造,初始容量为 16 个字符。(默认的容量足够,不需要指定容量大小)

  • 2)public StringBuffer(String str):构造一个缓冲区,指定字符串内容到缓冲区中,容量大小等于16个+当前字符串的实际长度

  • 3)public StringBuffer(int capacity):指定容量大小,构造一个缓冲区

  • 注意事项:

  • 不能将String类型的值赋值给一个StringBuffer类型

  • StringBuffer sb = “hello” ; //错误的

  • String s = new String(“hello”) ;

  • StringBuffer sb2 = s ; //错误的

StringBuffer的添加功能:

  • public StringBuffer append(任何类型数据…):将任何类型的数据追加到缓冲区中(追加末尾)
  • public StringBuffer insert(int offset,String str/任何类型数据):将某个元素插入到指定位置

StringBuffer的删除功能

  • public StringBuffer deleteCharAt(int index):删除指定位置处的字符,返回缓冲区本身
  • public StringBuffer delete(int start,int end):删除从指定位置到指定位置结束(包前不包后,end-1位置)

关于:反转功能

  • 键盘录入一个数据,将字符串进行反转—(内容还是字符串内容)
  • public StringBuffer reverse():将缓冲区中的字符进行反转!

StringBuffer的其他功能

  • StringBuffer的截取功能
  • public String substring(int start):从指定位置开始截取,默认截取到末尾
  • public String substring(int start, int end):从指定位置开始截取,截取到指定位置结束!

StringBuffer的替换功能

  • public StringBuffer replace(int start,int end, String str)
  • 从指定位置开始到指定位置结束(end-1处)使用str子串进行替换

String <----> StringBuffer类型的相互转换

//String---->StringBufferString s = "world" ;//StringBuffer sb = s; //type Mismatch:类型不匹配//方式1:通过StringBuffer构造方法:StringBuffer(String str)StringBuffer sb = new StringBuffer(s) ;System.out.println(sb);System.out.println("-------------------------------");//方式2:StringBuffer()无参构造+append(String str):追加StringBuffer sb2 = new StringBuffer() ;sb2.append(s) ;System.out.println(sb2);   System.out.println("-------------------------------");//StringBuffer----->StringStringBuffer buffer = new StringBuffer("hello") ;//方式1//public String(StringBuffer buffer):String类型的构造方法String str = new String(buffer) ;System.out.println(str);System.out.println("-------------------------------");//StringBuffer--->public String toString() String str2 = buffer.toString() ;System.out.println(str2);
将数组拼接字符串 "[元素1, 元素2, 元素3, ....]"
//方式1定义一个功能: 将数组拼接成Stringpublic static String arrayToString(int[] arr) {//定义一个结果变量String result = "" ;//拼接左中括号result += "[" ;//遍历数组for (int i = 0; i < arr.length; i++) {if(i==arr.length-1) {result += arr[i] ;result += "]" ;}else {result += arr[i] ;result += ", " ;}}return result;}//方式2:使用StringBuffer的append追加public static String arrayToString2(int[] arr) {//创建一个StringBuffer对象StringBuffer sb = new StringBuffer() ;sb.append("[") ;//遍历数组for (int i = 0; i < arr.length; i++) {if(i==arr.length-1) {sb.append(arr[i]).append("]") ;}else {sb.append(arr[i]).append(", ") ;}}return sb.toString() ;}
字符串内容反转
//方式1public static String reverse(String s) {//定义一个结果变量String result = "" ;//将s变量---->变成字符串数组char[] chs = s.toCharArray() ;for(int x = chs.length-1; x >=0 ; x --) {//拼接每一个元素result += chs[x] ;}return result ;}//方式2:利用StringBuffer的reverse()方法public static String reverse2(String s) {//一步走return new StringBuffer(s).reverse().toString();}

StringBuffer,StringBuilder和数组的区别

  • 前两个都是字符串缓冲区,都支持可变的字符序列,有相同的api

  • 前者:它是一个线程安的,-----同步的----->执行效率低(线程安全的类)

  • 后者:它是一个线程不安全的—不同步的---->执行效率高 单线程程序---->考虑效率问题---->后者会将前者替换掉!

  • 多线程程序—>最重要的安全问题---->StringBuffer了 他们和数组: 都容器,都可以存储数据的!

  • 字符串缓冲区:存储数据最终以"字符序列"存储的(StringBuffer/StringBuilder)

                  长度可变,可以不断追加:append(xxx)字符串遍历:length()+charAt(int index)            数组:只能存储同一种类的元素长度是固定的,(也是数组的弊端)数组的遍历:length属性:获取数组长度
    

StringBuffer和String类型作为形式参数有什么区别:

  • 两个都是引用类型

  • String类作为形式参数,它的效果基本数据类型一样(String是最特殊的引用类型)

  • String是一个常量,一旦被赋值,其值不能被改变

  • StringBuffer/StringBuilder,他们作为形式参数,

  • 形式参数的改变会直接影响实际参数(和其他引用类型效果一样)

Integer类

Integer类:包含了int类型的值

  • public static String toBinaryString(int i):将整数值以"二进制"文本形式体现…

  • public static String toOctalString(int i)

  • public static String toHexString(int i)

  • 成员变量(字段)

  • public static final int MIN_VALUE:最小值

  • public static final int MAX_VALUE:最大值

Integer类的构造方法

  • Integer(int value) :将int类型包装了Integer类型

  • Integer(String s) :将字符串内容包装Integer类型

  • 注意事项:

  • String是一个数字字符串,否则出现异常!
    Jdk5提供一些特性:自动拆装箱功能,后面: 静态导入(导入到方法的级别:前提方式静态的),可变参数(public static 返回值类型 方法名(int …))

  • 增强for循环(集合),泛型:类名/接口名<引用类型>
  • 举例:
  • 基本类型----引用类型: 自动装箱 int---->Integer
  • 引用类型—基本数据类型 : 自动拆箱 :Integer --int
  • String----->int :Inerget.parseInt(String str)
  • String----->long :Long.parseLong(String str)
  • String----->double:Double.parseDouble(String str)
  • int------>String: Integer.toString(int i)

Character类

Character:char类型的包装类类型,包含一个char类型的值

  • 构造方法

  • public Character(char value)

  • 判断功能:

  • public static boolean isDigit(char ch):判断当前字符是否是数字字符

  • public static boolean isLowerCase(char ch):判断当前字符是否是小写字母字符

  • public static boolean isUpperCase(char ch):判断当前字符是否是大写字母字符

java.util.Calendar类:日历类

  • Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,
  • 并为操作日历字段(例如获得下星期的日期)提供了一些方法
  • Calendar不能直接实例化!
  • 某一个类如果不能直接实例化:
  • 首先里面会存在一些静态功能,静态功能的返回值就是该类本身!
  • public static Calendar getInstance()
  • public int get(int field):获取的日历字段的值!
  • 参数:传递日历字段

Calendar的成员方法:

  • 给日历字段添加或者减去时间偏移量
  • public abstract void add(int field,int amount)
  • 日历对象.add(Calendar.DATE,-5):当前日历时间的5天前
  • 设置当前年月日,日历时间
  • public final void set(int year,int month, int date)

Date类

java.util.Date类

  • 特定的瞬间,精确到毫秒。
  • 构造方法:
  •  public Date() 无参构造
    
  • 成员方法:
  •  public long getTime() :返回1970 年 1 月 1 日所表示的时间毫秒
    

java.util.Date 应用场景 String:文本格式 和Date格式的相互转换
关于

  • String文本格式 和Date日期格式相互转换
    Date---------------->String 日期文本格式 "格式化"操作
  • java.text.DateFormat:可以将日期和文本相互转换
  • DateFormat继承自Format类:都是抽象类,不能直接实例化!,提供更具体的子类
  •  java.text.SimpleDateFormat extends DateFormat
    
  • 它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)
  • SimpleDateFormat的构造方法
  •  public SimpleDateFormat(String pattern):
    
  • 创建一个SimpleDateFormat对象
  •  参数:指定一个模式 要遵循一定的规则(jdk对它规定了)
    
        y年   ------2020      "yyyy"M年中月份----10/03   "MM"d月中的天数----05/21  'dd'h:表示上午/下午的小时数  hhH:一天中的小时数          HHm:分钟数                 mms:秒数                  ss

模式

  • “yyyy-MM-dd HH:mm:ss”
  • “yyyy年MM月dd日 HH时mm分ss秒”
  • Date---->String
  • 格式化的步骤:
  • 1)存在Date对象
  • 2)创建SimpleDateFormat(String pattern)
  • 3)public final String format(Date date):格式化方法

解析
String----->Date

  • 步骤:
   1)存在String  "日期文本"   "2020-10-21"2)创建SimpleDateFormat(String pattern)3)public Date parse(String source)  throws ParseException
  • 解析:
  • SimpleDateFormat中的参数模式:必须和String 日期文本格式一致,否则出现解析异常(ParseException)
    例如:定义一个工具类
 /*** 这个方法是将Date日期格式转换成日期文本格式* @param date  当前日期对象* @param pattern 指定模式 yyyy-MM-dd(年月日)* @return 返回的结果表示是当前日期文本*/public static String date2String(Date date,String pattern) {//分步走//创建SipleDateFormat对象/*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;//格式化String dateStr = sdf.format(date) ;return dateStr ;*/return new SimpleDateFormat(pattern).format(date) ;}/*** 这个方法是将日期文本转换成日期格式* @param source  已知存在的日期文本* @param pattern  指定模式 yyyy-MM-dd(年月日)* @return 返回的结果是日期格式Date* @throws ParseException */public static Date string2Date(String source,String pattern) throws ParseException {//创建SimpleDateFormat对象/*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;Date date = sdf.parse(source) ;return date ;*/return new SimpleDateFormat(pattern).parse(source) ;}
测试:
public static void main(String[] args) throws ParseException {//Date--->String  格式化操作Date date = new Date() ;String dateStr = DateUtils.date2String(date, "yyyy"+ "-MM-dd") ;System.out.println(dateStr);System.out.println("---------------------------------");String dateStr2 = DateUtils.date2String(date, "yyyy-MM-dd HH:mm:ss") ;System.out.println(dateStr2);//2020-10-21 14:28:32System.out.println("---------------------------------");//String---->Date:解析操作String s = "2008-5-12 14:28:00" ;Date d = DateUtils.string2Date(s, "yyyy-MM-dd HH:mm:ss"); //模式必须和String文本格式一致System.out.println(d);//Mon May 12 14:28:00 CST 2008}

BigDecimal类

java.math.BigDecimal

  • 描述:对浮点类型的数据进行精确计算的!

  • 构造方法:

  • public BigDecimal(String val) :字符串"数字字符串"

  •        "1.0"
    
  •          "0.01.."
    
  • 成员方法:

  •  public BigDecimal add(BigDecimal augend) :求和
    
  •  public BigDecimal subtract(BigDecimal subtrahend):减法
    
  •  public BigDecimal multiply(BigDecimal multiplicand):乘法
    
  •  public BigDecimal divide(BigDecimal divisor)
    

Math类

java.lang.Math:

  • Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
  • public static double abs(double a/…):求某个数据的绝对值
  • public static double ceil(double a):向上取整
  • public static double floor(double a):向下取整
  • public static int min(int a, int b):求两个int数据的最小值
  • public static int max(int a,int b):求两个int数据的最大值
  • public static double random():随机数[0.0,1.0) ---------> Java提供随机数生成器:Random类 nextInt(int n)
  • public static int round(float a):四舍五入…
  • public static long round(double a)
  • public static double sqrt(double a):开根(一个正整数的平方根) 4—2
  • public static double pow(double a,double b):返回结果:a的b次幂
    动态导入:
  • import 包名.类名;
  • import java.util.Date/Scanner/List/ArrayList…

静态导入的格式:

  • import static 包名.类名.方法名;

  • 前提这些方法是静态 的

  • 使用静态导入的注意事项:

  •  如果当前类中出现了和导入的静态方法名一样,冲突了,在使用静态导入的这个的方法的时候
    
  • 就必须带上限定(包名.类名)

  例如:System.out.println(java.lang.Math.abs(-100));

Object array

对象数组

  • 能够存储对象的数组

使用数组存储引用数据类型是可以实现的,但是它不满足长度可变的需求,Java提供了 —“集合”,支持长度可变的

  • 集合特点:只能存储引用数据类型!

Random类

java.util.Random:随机数生成器

构造方法

  • public Random() :(推荐),产生的随机数是变化的
  • public Random(long seed):每次产生的随机数 是固定的!

成员方法:

  • public int nextInt():获取的是int范围内的随机数
  • public int nextInt(int n):获取0到n之间的随机数[0,n)

获取随机数两种方式:

  • Math类的random()方法: 返回值double类型
  • Random类空参构造+nextInt(int n):获取随机数

System类

System 类包含一些有用的类字段和方法。它不能被实例化。
字段:

  • public static final InputStream in :标准的"输入流"
  • public static final PrintStream out :标准的"输出流"
    键盘录入:
  •      Scanner(InputStream in) ---->Scanner(System.in)
    

输出语句:

  •  System.out.println("xxx")----->System.out--->PrintStream ps (字节打印流)
    
  •                  ps.println("x") : 字节打印流调用方法名println(String str)
    

成员方法:

  •  public static void gc() 运行垃圾回收器(手动开启)
    
  • 实际开发中,开发者不需要开启
  • 运行垃圾回收器,它会调用Obejct类finalize(),回收没有更多引用的对象
  •  public static void exit(int status):参数状态为0:表示正常终止jvm
    
  •  public static long currentTimeMillis():获取当前系统时间的毫秒值
    
public static void arraycopy(Object src, int srcPos, Object dest,  int destPos, int length)      *       从原数组中的指定位置开始进行复制指定length长度复制到目标数组中的某个位置*        参数1:指定源数组*      参数2:源数组中的某个位置*      参数3:目标数组对象*         参数4:目标数组对象中的某个位置*       参数5:指定几个元素复制(长度)

集合

Collection集合

Collection中的高级功能:

  • boolean addAll(Collection c):添加一个集合中的所有元素

  • boolean removeAll(Collection c):只要集合中有一个元素被包含,将这个元素从c1删除掉,则返回true!

  • boolean containsAll(Collection c):包含所有元素才算包含,返回true

  • public boolean retainAll(Collection c) 取交集:boolean的真实含义是什么:
    c1.retainlAll(c2):c1集合的元素是否发生变化!A集合对B集合取交集,将交集的元素保存到A集合,boolean表达的是A集合是否发生变化如果A集合没有变化的,返回结果false;如果A集合有变化,则返回true!

  • 集合中Iterator迭代器本质:就是具体的子实现类的内部类间接实现了迭代器!

迭代器的注意事项:

  • 1)Object next()获取当前集合的元素(),不能使用多次,使用一次即可,
  • 获取所有元素信息
  • 2)能使用for循环,不推荐(因为以后集合中元素可能不知道个数,使用while循环)
    泛型
格式<数据类型:引用数据类型>

集合为了迎合数组的特点,在创建数组的时候,将类型定义了,来保证集合中的元素类型一致的!
泛型的特点:
将集合的类型在创建的时候创建的时候就明确,保证集合操作的安全性!
好处:
1)避免了强制类型转换
2)将运行时期异常提前到了编译时期
3)解决了黄色警告线问题
4)提高了程序的安全性!
泛型可以应用在哪些地方

  • 泛型在集合中使用居多,可以定义类上,可以放在方法上,也可以放在接口上!
  • 没有加入泛型之前,程序存在安全隐患,出现类型不匹配:ClassCastException:属于运行时期异常!

泛型的高级通配符

  • <?> 当前Object类型/任意Java类型(自定义/jdk提供...)
  • <? extends E>:向下限定:E类型以及它的子类
  • <? super E>:向上限定:E类型以及它的父类

List集合

List集合 extends Collection

  • 有序的集合,可以允许元素重复!

  • 有序性:存储和取出一致

  • 使用List集合存储字符串并遍历

  • 使用List集合存储自定义对象并遍历(自己完成!)

  • 两种方式:

  •  1)Object[] toArray()
    
  •  2)Collection集合的Iterator
    

List集合的特有功能:
添加功能

  •  void add(int index,Object element):在指定位置处添加一个新的元素
    

删除功能

  • Object remove(int index):删除角标对应的元素

获取功能

  •     Object get(int index) :获取指定位置处的元素
    
  •      int size():获取集合的元素数
    
  •      Object set(int index,Object element):在指定位置处使用当前元素element元素替换
    

ListIterator listIterator():List集合的专有遍历方式 :列表迭代器
ListIterator:列表迭代器

  • ListIterator listIterator()这个方法底层实现:是通过ArrayList里面的成员内部类
  •         ListItr extends Itr :实现的
    

正向遍历

  • boolean hasNext():判断是否有下一个元素
  • Object next() :获取下一个元素

逆向遍历

  • boolean hasPrevious():判断是否有上一个元素
  • Object previous():获取前一个元素

List集合的遍历方式:

  •  1)Collection集合的方法 Object[] toArray
    
  •  2)Collection集合的迭代器Iterator iterator()
    
  •  3)size()+Object get(int index):普通for循环
    
  •  4)列表迭代器:ListIteraotr listiterator()
    
  •  5)增强for循环
    

List三个子实现类的特点:

 ArrayList   底层数据结构是可变数组结构: 查询快,增删慢ArrayList底层可变数组: ArrayList(int initialCapacity) :通过初始化容量构造ArrayList集合默认容量大小:capacity:10个ArrayList()---->通过初试容量大小判断是否构造一个新Object[] 数组对象结论:它的扩容机制 ---1.5倍扩容线程角度:线程不安全的类----不同步的----执行效率高!    单线程程序中,通常没有告诉使用什么集合的时候,优先采用的是ArrayList集合!   Vector :底层数据数组结构(对象数组)查询快,增删慢线程角度:线程安全的类 ---->同步的----->执行效率低多线程程序中要考虑安全问题,使用VectorLinkedList:底层数据结构:链接列表实现(链表)线程角度:线程不安全-----不同步---->执行效率高特有功能:可以模拟栈结构的:先进后出!线程安全的类StringBuffer/Vector

Set集合

Set集合的特点:

  • 元素是不重复的,无序的!(存储和取出不一致,取决于底层HashMap实例)
  • 子实现类
  •  HashSet
    
  •  TreeSet
    

使用HashSet集合存储自定义对象并遍历

  • Student的姓名和年龄如果相同,认为同一个人;发现问题:HashSet集合没有去重

  • 底层依赖于HashCode和equals()方法

  • 可能出现一种情况:

  •   成员信息不同,但是hash码值一样
    
  •      比较每一个成员信息的内容是否相同:name  (String)
    
  • 使用HashSet:底层hash表结构 来保证元素的唯一性!

  • 存储自定义对象,必须重写hashcode()和equals()

  • TreeSet集合(重点:排序条件!)

  •    排序
    
  • 底层是一种红黑树结构(TreeMap):“自平衡的二叉树”

  • Map集合:

  • 如何遍历Map集合

  •  HashMap
    
  •  TreeMap
    

ArrayList类

ArrayList集合实现了List接口!

  • 可以存储重复元素,存储和取出一致(有序的)!

  • ArrayList:单线程程序中考虑执行效率,优先采用!

  • 应用场景:

  •  网络聊天室  查看在线好友列表
    
  •             张三  (客户端 Socket)   ArrayList<Socket>
    
  •             李四
    
  •             王五
    

在一些嵌套中使用

  •  HashMap<String,ArrayList<String>>  :Map集合嵌套ArrayList
    
  •  ArrayList<ArrayList<Student>> :ArrayList嵌套ArrayList
    

Vector集合

Vector集合:

  • 底层数组结构:查询快,增删慢

  • 线程安全的---->同步的---->执行效率低!

  • public boolean add(Object e):传统添加元素的方法
    特有功能:

  •  public void add(int index, E element):插入元素
    
  •  public Enumeration<Object> elements()     --- 相当于:Iterator iterator()
    
  •          该接口有两个方法
    
  •          boolean hasMoreElements():判断是否有下一个元素-----> 相当于:boolean hasNext()
    
  •          Object nextElement():获取一个元素                          -----> 相当于:next()
    
  •  public Object elementAt(int index):通过角标获取指定的元素---->
    
  •                                                    相当于:Object get(int index)
    
  •  elementAt()+size() :vector的普通for遍历方式
    
  •   Enumeration和Iterator功能是重复的
    

场景:

  •  IO流:合并流 SequenceInputStream 可以将多个文件内容读出来复制到指定文件中!
    
  •              操作的输入流!
    

LinkedList集合

LinkedList集合的特点:

  •  底层数据结构是链接列表,查询慢,增删快
    
  •  线程不安全的---不同的---->执行效率高!
    

应用场景:

  •  网站中    记录用户浏览过商品足迹  (Web技术:Cookie/Session)
    

特有功能
添加

  •  public void addFirst(Object e):将该元素添加到列表的开头!
    
  •  public void addLast(Object e):将该元素添加到列表的末尾!
    

删除

  •  public Object removeFirst():删除列表第一个
    
  •  public Object removeLast():删除列表最后一个
    

获取

  •  public Object getFirst():获取第一个
    
  •  public Object getLast() :获取第二个
    

弹栈和压栈

  •  public Object pop():此列表所表示的堆栈处弹出一个元素
    
  •  public void push(Object e):将元素推入此列表所表示的堆栈
    
例子:模拟栈的先进后出:
public class MyStack {//成员变量位置private LinkedList<String> link = null ;//无参构造方法public MyStack() {link = new LinkedList<String>() ;}//提供一个add方法,添加元素public void add(String obj) {//间接通过自定义的功能:使用LinkedList的功能link.addFirst(obj);//link.addFirst("hello") ;----"hello"//addFirst("world") --->"world","hello"//addFirst("java")---->"java","world","hello"}//在通过获取元素public String get() {//使用LinkedList里面 public Object removeFirst()return  link.removeFirst() ;}//判断功能public boolean isEmpty() {//利用LinkedList 的判断功能return link.isEmpty() ; //isEmpty():集合为空,返回值true}}

froeach

JDK5之后提供了特性:

  • <引用类型>泛型,静态导入,增强for,可变参数,自动拆装箱

增强for的格式:

  •  for(数据类型 变量名 : 数组对象/集合对象(使用最多)){
    
  •      输出变量名即可
    
  •  }
    

作用: 是替代迭代器使用,简化遍历集合的书写格式!

注意事项:

  •  1)增强for主要用在集合中,数组一般使用的时候普通for
    
  •  2)前提条件:
    
  •      要使用增强for循环的话,必须保证该集合不能为null,否则就会出现空指针
    
  •              NullPointerException
    
  •  解决方案:
    
  •          针对该对象非空判断即可!
    

JavaSE基础知识之常用类和集合相关推荐

  1. Java基础知识——Java常用类的使用

    目录 内容小结 String类 String对象的创建 字符串的特性判断 拼接 String类的常用方法 String和char[]的相互转换 实现代码 StringBuffer StringBuff ...

  2. JavaSE基础知识(五)--面向对象代码实现初步(实现一个简单的类类型代码)

    Java SE 是什么,包括哪些内容(五)? 本文内容参考自Java8标准 一.面向对象(代码实现): 首先,在这里我需要说明一个根本性的问题:实际上,面向对象编程包括了两部分,一个是你的编程思想,一 ...

  3. 【JavaSE 基础知识盲点小结】

    [JavaSE 基础知识盲点小结] 一.第一天: 1. 在 cmd 命令窗口问题: ①编译是: javac HelloWorld.java ②运行时是: java HelloWorld (类名 不加 ...

  4. Python基础知识与常用数据类型

    Python基础知识与常用数据类型 目录 Python基础知识与常用数据类型 一.Python概述: 二.Python中的基础语法: 三.Python内置数据结构: 4.附录 一.Python概述: ...

  5. 面向对象-----6(javaSE基础知识完结篇)

    目录 解析面向对象 内存分析 三大特性.封装.继承.多态 接口 内部类 涉及知识目录总览: 资料来自于马士兵java笔记 这是javaSE基础知识的最后一篇笔记 1. 解析面向对象 返回目录 [1]面 ...

  6. 总结Linux基础知识和常用渗透命令!!!

    作为Web渗透的初学者,Linux基础知识和常用命令是我们的必备技能,本文详细讲解了Linux相关知识点及Web渗透免了高龄.如果想玩好Kali或渗透,你需要学好Linux及相关命令,以及端口扫描.漏 ...

  7. Javase基础知识总结

    今天11.25,我开始了第二天的写日记 我也开始了我的整理笔记 我希望我可以一直坚持下去 我不想为了未来的我后悔 加油 Javase基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我 ...

  8. db2 replace函数的用法_SQL基础知识:常用字符处理函数

    原标题:SQL基础知识:常用字符处理函数 作者:丶平凡世界

  9. java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO

    Day50.Map类常用的方法 -Java常用类.集合#.IO Day50.Map类常用的方法 -Java常用类.集合#.IO Map类常用的方法 . 总结: 常用方法 添加: put(Object ...

最新文章

  1. CMake命令之function
  2. 关于python中requests模块导入问题-Python中requests模块的核心使用(1)
  3. IoC(Inversion of Control,控制反转)模式
  4. 亚马逊 开发者api 调用_关于微信API:常用微信API文档整理
  5. Windows Phone 8.1 开发实例 网络编程 天气预报
  6. Runner站立会议05
  7. JBOSS 5.0.0GA的集群搭建
  8. python str has no attribute_python – AttributeError(“’str’object has no attribute’read’”)...
  9. 黑科技网站推荐 第一弹 RemoveBg [一键抠图]
  10. 淘宝上大量贩卖微信号,这些人买这么多微信号目的是
  11. maven-repository文件
  12. requests爬取英雄联盟皮肤图片
  13. Codeforces Round #467 (Div. 2) - D. Sleepy Game (找环)
  14. 判断各类无盘软件是否处于超管状态
  15. ZYNQ开发系列——双串口打印以及串口波特率设置
  16. ibatis配置文件中 parameterClass,resultClass,resultMap 表示的意思
  17. Java--JSP四大作用域、九大内置对象
  18. uva10635Prince and Princess(LIS)
  19. 开黑 你造【王者荣耀】是什么编程语言开发的吗?
  20. python 常用系统内置模块

热门文章

  1. 如何成为某个领域的达人?
  2. 十大管理之风险管理知识点
  3. ES--索引生命周期管理
  4. Linux iondma-bufiommusglistgenpool的原理
  5. 自用的桌面日历软件分享!高效的时间管理工具!超级赞!
  6. 可视化和回归分析星巴克咖啡在中国的定价建议
  7. 曲形文字识别 - Transformer-based Convolutional-Attention Network for Irregular Text Recognition
  8. 选择大于努力,观念决定命运,智慧决定贫富
  9. 先建立一个Point(点)类,包含数据成员x,y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再
  10. Flash实例教程:鼠标感应放大缩小动画_Flash_||太平洋电脑网