java中string、this、static、集合相关知识

对于基本类型来说,==是数值的比较,
对于引用类型来说,==是地址值的比较。

String

字符串的内容不可改变

1.equals(Object obj)参数可以是任意对象,
2.equals(Object obj)方法具有对称性
3.常量和变量比较时,推荐的把常量写在前边
4.equalsIgnoreCase(String str)忽略大小写,进行内容比较。
5.int length() //获取字符串中字符的个数。拿到字符串长度。
6.String concat(String str)将当前字符串和参数字符串拼接称位返回值新的字符串。
7.char charAt(int index) 获取指定索引位置的单个字符串
8.int intdexOf(String str)查找参数字符串在本字符串首次出现的索引位置,没有返回-1.
9.String substring(int index)截取从参数位置一直到字符串结尾,返回新字符串,
–String substring(int begin int end)截取从begin 开始,一直到end结束中间的字符串,包含左边不包含右边。
10.char[] toCharArray()将当前字符串拆分成为字符串数组作为返回值
11.byte[] getByte() 获得当前字符串底层的字节数组
12 String [] split(String regex) 按照参数(其实是一个正则表达式)的规则,将字符串切分成为若干部
分。
String.valueOf() 方法的使用
由 基本数据型态转换成 String,String 类别中已经提供了将基本数据型态转换成 String 的 static 方法也就是 String.valueOf() 这个参数多载的方法。
有下列几种:
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串
String.valueOf(char c) : 将 char 变量 c 转换成字符串
String.valueOf(char[] data) : 将 char 数组 data 转换成字符串
String.valueOf(char[] data, int offset, int count) :
将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串
String.valueOf(double d) : 将 double 变量 d 转换成字符串
String.valueOf(float f) : 将 float 变量 f 转换成字符串
String.valueOf(int i) : 将 int 变量 i 转换成字符串
String.valueOf(long l) : 将 long 变量 l 转换成字符串
String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString()
用法如:
int i = 10;
String str = String.valueOf(i);
这时候 str 就会是 “10”

StringBuilder

类,也叫字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)底层也是一个数组,但是没有被finall修饰可以改变长度。
StringBuilder在内存中始终是一个数组,占用空间少,效率高。如果超出 StringBuilder的容量,会自动扩容。
常用的两个方法:public StringBuilder append()添加任意类型数据的字符串形式,并返回当前对象自身。
public String toString()将当前 StringBuilder对象转换为String对象。

Arrays工具类

与数组相关的工具类,提供了大象的静态方法来实现数组的常见操作

public static String toString(数组)将参数数组变成字符串
public static void sort(数组)默认按照升序(从小到大)对数组进行排序

this

当方法的局部变量和类的成员变量重名时,根据“就近原则”,优先使用局部变量。
如果需要访问本类当中的成员变量,需要使用格式 this.成员变量名
“通过谁调用的方法,谁就是this”
用法:
1.在本类的成员方法中,访问本类的成员变量。
2.在本类的成员方法中,访问本类的另一个成员方法。
3.在本类的构造方法中,访问苯本类的另一个构造方法。且调用的必须是构造方法的第一个语句,唯一一个。super和this两种构造调用,不能同时使用

static

使用了static关键字。那么内容不在属于对象自己,而是属于类的,所以凡是本类的对象,都共享同一份数据。
使用static修饰成员方法,那么这就称为静态方法,静态方法不属于对象,而是属于类的,如果没有static关键字,那么必须首先创建对象,然后才能使用它。对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用,对于本类当中的静态方法,可以省略类名称。

*注意事项:静态方法可以访问静态变量,静态不能直接访问非静态,静态方法中不能使用this,

super

三种用法:
1.在子类的成员方法中,访问父类的成员变量。
2.在子类的成员方法中,访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法。

集合

在这里插入图片描述
在这里插入图片描述
ArrayList
ArrayList划入数组的最大区别是ArrayList集合的长度是可以任意改变的。集合里面保存的都是地址值
ArrayList是一个类,对于ArrayList来说,直接打印得到的不是地址值,而是内容。如果打印的内容的空,返回的则是一个空的中括号[ ]。

ArrayList<String> list=new ArrayList<>();
list.add("xx")  //添加一个元素(和泛型保持一致)的方法,有返回值可用可不用
list.get(int index)  //从集合中获取元素
list.remove(int index)   //从集合中删除元素,返回值是被删除掉的元素
int size()   //获取集合的尺寸长度,返回值是集合包含的元素个数。

Collection接口(定义了单列集合的通用方法

Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:

public boolean add(E e): 把给定的对象添加到当前集合中 。返回值时布尔值,可以不用返回

public void clear() :清空集合中所有的元素。不删除集合,知识删除里面数据而已

public boolean remove(E e): 把给定的对象在当前集合中删除。返回值时布尔值集合中存在元素删除元素返回true,集合不存在删除失败返回false。

public boolean contains(E e): 判断当前集合中是否包含给定的对象。返回布尔值

public boolean isEmpty(): 判断当前集合是否为空。

public int size(): 返回集合中元素的个数。

public Object[] toArray(): 把集合中的元素,存储到数组中

List接口特有方法

List作为Collection集合的子接口,继承了Collection接口中的全部方法,以下为List接口的特有方法:

public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。

public E get(int index):返回集合中指定位置的元素。

public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。

public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素

List集合子类

1.ArrayList集合:数据存储的结构是数组结构。元素增删慢,查找快。

2.LinkedList集合:数据存储的结构是链表结构。方便元素添加、删除的集合 。查找慢,但对集合首尾元素的查找并不慢,且实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法
LinkedList集合特有方法:
public void addFirst(E e) :将指定元素插入此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第一个元素。
public E getLast() 返回此列表的最后一个元素。
public E removeFirst() :移除并返回此列表的第一个元素。
public E removeLast() :移除并返回此列表的最后-一个元素。
public E pop() :从此列表所表示的堆栈处弹出一一个元素。
public void push(E e) :将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。

Set 接口

Set集合无序,存储顺序和取出顺序不一致,且集合中元素唯一,没有重复(通过hashCode()和equals()方法比较是否唯一),不允许存储重复的元素,没有索引的方法,也不能使用普通的for循环遍历。

Set集合子类

  1. HashSet集合
    哈希表底层采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,哈希表存储采用数组+链表+红黑树实现,当链表长度超过阈值8时,将链表转换为红黑树,这样大大减少了查找时间。存储元素和取出元素的顺序可能不一致。

2.LinkedHashSet集合
链表和哈希表组合的一个数据存储结构,其中多了一条链表记录元素顺序。可以理解为有序的HashSet。

Collections集合工具类
●java.utils .collections 是集合工具类,用来对集合进行操作。部分方法如下:
●public static boolean addAll(Collection C, T… elements) :往集合中添加一一些元素。
●public static void shuffle(List<?> list)打乱顺序:打乱集合顺序。
●public static void sort(List list) :将集合中元素按照默认规则排序。
public static void sort(List list,Comparator<? super T> ) :将集合中元素按照指定规则排序。

Map接口

1.map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素, key和value的数据类型可以相同,也可以不同
3. Map集合中的元素, key是不允许重复的,value是可以重复的
4. Map集合中的元素,key和value是一一对应
public V put(K key, V value) , :把指定的键与指定的值添加到Map集合中。
public V remove(object key) :把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。
public V get(object key) 根据指定的键,在Map集合中获取对应的值。
boolean containsKey(Object key)判断集合中是否包含指定的键。
public Set keySet() :获取Map集合中所有的键,存储到Set集合中。
public Set<Map. Entry<K,V>> entrySet() :获取到Map集合中所有的键值对对象的集合(Set集合)。
返回值:v
存储键值对的时候,key不重复,返回值v是null
存储键值对的时候,key重复,会使用新的val ue替换map中重复的value,返回被替换的value值

HashMap
map接口常用子类,
HashMap集合的特点:
1.HashMap集合底层是哈希表:查询的速度特别的快
JDK1.8之前:数组+单向链表
JDK1.8之后:数组+单向链表/红黑树(链表的长度超过8):提高查询速度
2.hashmap结合是一个无序集合,存储元素和取出元素顺序可能不一样

LinkedHashMap
HashMap的子类,基于哈希表和链表实现
L inkedHashMap的特点:
1.LinkedHashMop集合底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMop集合是-一个有序的集合,存储元素和取出元素的顺序是一致的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值