Learning java 03
1.字符串
1.字符串对象创建时是放在常量池中 String s = "abc"。 2.堆内存当中用 new 方法创建的String对象,然后存入 abc 对象,共两个对象: String s1 = new String("abc"); // 与1不等 3.s.equals(s1); // true,重写Object中的equals,比较字符串内容,而不是地址 4.s==s1; // false,比较的是字符串地址
5.char[] arr = {'y','q','l'}
String s2 = new String(arr); // yql 字符数组转字符串
2.索引
int indexOf(int ch) // 查找字符的索引 int indexOf(int ch, int fromIndex) int indexOf(String str); // 查找字符串的索引 int indexOf(String str, int fromIndex) int lastIndexOf // 从后面开始找目标,返回从左开始数的索引
char charAt(int index) // 查找索引位置的值
String substring(int beginIndex, int endIndex) // 包含begin,不包含end,返回截取后的子串
3.字符串切割及替换
split() char[] toCharArray() // 转为字符数组 byte[] getBytes() // 转为字节数组,1字符=2字节,1中文GB2312=2字节
String toUpperCase() // 大写
String toLowerCase() // 小写
String replace(char oldch, char newch) // 参数可以是String s1, String s2
String trim()
String concat(String str)
static String copyValueOf(char[] data,...) // 将字符数组转为字符串
valueOf(String str) // 将类型比如数字转为字符串
4.字符串比较
boolean equals // 比较内容 boolean equalsIgnoreCase // 忽略大小写的内容比较 boolean contains // 是否包含,1.5版本开始,与 indexOf 类似 boolean startsWith // 是否以指定字符串开头 boolean endsWith // 是否以指定字符串结尾 int compareTo(String anotherString) // 按字典顺序比较,小于参数,返回负数;大于参数,返回正值;注意:基本数据类型使用 < > == 比较,而对象使用 compareTo
5.StringBuffer 字符串缓冲区,存储数据的容器对象,长度可变,可以存储不同类型数据,最终都是转成字符串。
StringBuffer sb = new StringBuffer(); sb.append(4).append(false).append("ahah"); // 总是返回缓冲区StringBuffer sb,转成 String 使用 toString() sb.insert(index, arg); // 插入 sb.delete // 删除不包含尾,清空缓冲区可以使用 sb.delete(0, sb.length()) sb.deleteCharAt(int index) // 删除指定位置的元素 // 查找与 String 相同 // 修改 StringBuffer replace(start, end, newString) void setCharAt(index, newChar) sb.setLength(length) sb.reverse() // 反转
6.StringBuffer 线程同步安全,代码块采用同步锁所以效率低。StringBuilder 1.5版本出现,等价 StringBuffer,线程不同步所以速度快。
单线程推荐使用 StringBuilder,多线程 StringBuffer
7.基本数据类型对象包装类
byte Byte short Short int Integer
// Integer.MAX_VALUE 最大值,
// toBinaryString 转成二进制,
// parseInt(String str) 字符串转整数 long Long float Float double Double char Character boolean Boolean
基本类型 ---> 字符串 1.基本类型数值 + "" 2.用String类中的静态方法 valueOf(基本类型数值) 3.用Integer.valueOf(基本数据类型) 字符串 ---> 基本类型 1.使用包装类中的静态方法 Xxx.parseXxx("xxx类型的字符串") 2.如果字符串被 Integer 进行对象的封装 可以使用非静态方法 intValue() 将一个 Integer 对象转成基本数据类型值 Integer i = new Integer("123"); i.intValue(); // 123
8.进制转换
Integer.toBinaryString(60); // 转2进制 Integer.toOctalString(60); // 转8进制 Integer.toHexString(60); // 转16进制
Integer.toString(int num, int radix) // 转成任意进制
Integer.parseInt(String intStr, int radix) // 其他进制转成radix进制
9.自动装箱
Integer x = 127; // jdk1.5 以后,如果装箱的是一个字节 -128 ~127 ,那么该数据会被共享,不会重新开辟空间,待验证
10.集合框架:用于存储对象的容器,长度可变,不可以存储基本数据类型值。与之比较的数组可以存储基本数据,但长度固定不变。

Collection接口方法 1.添加 boolean add(Object obj); boolean addAll(Collection coll); 2.删除 boolean remove(object obj) boolean removeAll(Collection coll); void clear(); // 删除所有元素,但集合依旧存在 3.判断 boolean contains(Object obj); boolean containsAll(Collection coll); boolean isEmpty(); // 没有元素放回true 4.获取 int size(); // 返回元素数 Iterator iterator(); // 取出元素的方法,迭代器 5.其他 boolean retainAll(Collection coll); // 取交集,与 removeAll 相反 Object[] toArray(); // 将集合转成数组
11.集合框架迭代器
集合类型 List Set
Collection coll = new ArrayList(); // List Set Collection 集合都有迭代器Iterator coll.add("abc1"); coll.add("abc2"); coll.add("abc3"); for (Iterator it = coll.iterator(); it.hasNext();) { // 判断从0开始是否有元素,for 换成 while ,it 将还能使用 System.out.println(it.next()); // 获取该元素 }
List coll = new ArrayList(); // list 额外获取成员的方法 coll.add("abc1"); coll.add("abc2"); coll.add("abc3"); for (int x=0; x<list.size(); x++) { System.out.println(list.get(x)); }
12.集合框架 Collection 接口的子接口
List:有序(存入和取出的顺序一致)元素都有索引,元素可以重复
Set:元素不能重复,无须
13.List特有的常见方法:有一个共性特点就是可以操作角标
1.添加 void add(index, element); void add(index, collection); 2.删除 Object remove(index); 3.修改 Object set(index, element); 4.获取 Object get(index); int indexOf(object); int lastIndexOf(object); List subList(from, to); // 不包含尾
14.注意事项:在迭代器Iterator操作过程中,不要使用集合 new ArrayList...add 操作元素,容易出现异常 java.util.ConcurrentModifiacationException 并发修改异常。可以使用 Iterator 接口的子接口 ListIterator 来完成在迭代中对元素进行更多的操作。
List list = new List(); list.add("abc1"); list.add("abc2"); list.add("abc3"); ListIterator it = list.listIterator(); // 获取列表迭代器对象 while(it.hasNext()) { Object obj = it.next(); if (obj.equals("abc2")) { it.add("abc9"); // add或者set 等方法独属于 ListIterator,只有list集合具备该迭代功能 } } // hasPrevious, previous 前面是否有东西
15.List
--Vector 容器1:内部是数组数据结构,大小可变,同步,增删、查询都慢。 --ArrayList 容器2:内部是数组数据结构,大小可变,不同步,查询速度快。 --LinkedList 容器3:内部是链表数据结构,不同步,增删元素的速度很快。
16.ArrayList可以添加不同的自定义对象,这些对象都为Object,实际开发中,为了避免输出为hash值或干脆报错,需要将Object向下强转。
public static void main(String[] args) { ArrayList a1 = new ArrayList(); a1.add(new Person("list1", 21)); a1.add(new Person("list2", 22));
a1.add(5); // 自动装箱变为对象 new Integer(5) Iterator it = a1.iterator(); while(it.hasNext()) { Sop(((Person) it.next()).getName()); // “.” 点的优先级次于括号,强转时括号的合理利用 } }
17.自动装箱(结合第9点):基本数据类型赋给了引用数据类型,将会自动装箱。
18.自动拆箱:当引用与基本数据类型计算的时候,将会自动拆箱。

浙公网安备 33010602011771号