------- android培训、java培训、期待与您交流! ----------
String类
字符串是一个特殊的对象。
String的内容一旦初始化则不可改变,如果要改变,则改变的肯定是String的引用地址。
class StringDemo
{
public static void main(String[] args)
{
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));//String类复写了Object类中equals方法,该方法用于判断字符串是否相同。
}
}
s1和s2两者的区别在于:s1在内存中有一个对象,s2在内存中有两个对象。
常见的操作:
1.获取
1.1字符串中包含的字符数,也就是字符串的长度。
int length():获取长度。
1.2根据位置获取位置上的某个字符。
char charAt(int index)
1.3根据字符获取该字符在字符串中的位置。
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置。
int lastIndexOf(int ch):返回的是ch反向索引时第一次出现的位置。
2.判断
2.1字符串中是否包含某一个子串。
boolean contains(str)、int indexOf(str)
2.2字符串中是否有内容。
boolean isEmpty():原理就是判断长度是否为0
2.3字符串是否是以指定内容开头。
boolean startsWith(str)
2.4字符串是否是以指定内容结尾。
boolean endsWith(str)
2.5判断字符串内容是否相同,覆写了Object类中的equals方法。
boolean equals(str)
2.6判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase()
3.转换
3.1将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。
静态方法:static String copyValueOf(char[]);
static String copyValueOf(char[],offset,count);
static String valueOf(char[])
3.2将字符串转成字符数组。
char[] toCharArray()
3.3将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4将字符串转成字节数组。
byte[] getBytes()
3.5将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
4.替换
String replace(oldchar,newchar);
5.切割
String[] split(regex);
6.子串,获取字符串中的一部分。
String substring(begin)//从指定位置开始到结尾
String substring(begin,end)//包含头,不包含尾
7.转换,去除空格,比较。
7.1将字符串转成大写或者小写。
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除。
String trim();
7.3对两个字符串自然顺序的比较。
int compareTo(string);
StringBuffer类
StringBuffer是字符串缓冲区,它相当于一个容器。
特点:
1.长度是可以变化的;
2.可以直接操作多个数据类型;
3.最终会通过toString方法变成字符串。
常见操作:
1.存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定位置。
2.删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含头,不包含尾。
StringBuffer deleteCharAt(index):删除指定位置的字符。
3.获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start,int end)
4.修改
StringBuffer replace(start,end,string);
void setCharAt(int index, char ch) ;
5.反转
StringBuffer reverse();
6将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
基本数据类型对象包装类的最常见作用
就是用于基本数据类型和字符串类型之间做转换
将字符串转换成整数的三种方式
1.int a = new Integer(string).intValue()
2.int b = Integer.parseInt(string);
3.int c = Integer.valueOf(string).intValue()
集合类
特点:
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
为什么会出现这么多的容器呢?
因为每一个容器对数据的存储方式都不同,这个存储方式称为数据结构。
Collection、Set、List的区别:
1.Collection是父类, Set、List是子类。
2.Collection中各元素对象之间没有指定的顺序,允许有重复元素和多个null元素对象。
3.Set各元素对象之间没有指定的顺序,不允许有重复元素,最多允许有一个null元素对象。
4.List各元素对象之间有指定的顺序,允许有重复元素和多个null元素对象。
Collection接口
Collection定义了集合框架的共性功能。
1.添加
add(e);
addAll(collection);
2.删除
remove(e);
removeAll(collection);
clear();
3.判断
contains(e);
isEmpty();
4.获取
iterator();
size();
5.获取交集
retainAll();
6.集合变数组
toArray();
List接口
特有方法:凡是可以操作角标的方法都是该体系特有的方法。
增
add(index,element);addAll(index,Collection);
删
remove(index);
改
set(index,element);
查
get(index):
subList(from,to);
listIterator();
int indexOf(obj):获取指定元素的位置。
ListIterator listIterator();
ArrayList例
class ArrayListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
Iterator it = al.iterator();//获取迭代器,用于取出集合中的元素。
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
Vector例class VectorDemo
{
public static void main(String[] args)
{
Vector v = new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en = v.elements();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());
}
}
}
Set接口
Set集合的功能和Collection是一致的。
例:往HashSet集合中存入自定对象然后再取出。
class HashSetTest
{
public static void main(String[] args)
{
HashSet hs = new HashSet();
hs.add(new Person("a1",11));
hs.add(new Person("a2",12));
hs.add(new Person("a3",13));
Iterator it = hs.iterator();
while(it.hasNext())
{
Person p = (Person)it.next();
System.out.println(p.getName()+"::"+p.getAge());
}
}
}
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public int hashCode()
{
System.out.println(this.name+"....hashCode");
return name.hashCode()+age*37;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
System.out.println(this.name+"...equals.."+p.name);
return this.name.equals(p.name) && this.age == p.age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
Map接口
Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
1.添加
put(K key, V value)
putAll(Map<? extends K,? extends V> m)
2.删除
clear()
remove(Object key)
3.判断
containsValue(Object value)
containsKey(Object key)
isEmpty()
4.获取
get(Object key)
size()
values()
entrySet()
keySet()
map集合的两种取出方式:
1.Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
2.Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,
而这个关系的数据类型就是:Map.Entry
Entry其实就是Map中的一个static内部接口。
class MapDemo
{
public static void main(String[] args)
{
Map<String,String> map = new HashMap<String,String>();
map.put("02","lisi");
map.put("03","wangwu");
map.put("01","zhangsan");
//将Map集合中的映射关系取出。存入到Set集合中。
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while(it.hasNext())
{
Map.Entry<String,String> me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}
}
}