本周学习的内容并不是特别多,前面的基础基本都学习完了,本周尝试着开始看源码,了解Java语言中源码的作用。所以说时间占用比较大。
1.对String有了更深刻,更透彻的了解。
String 为不可变字符串,通过原码发现,前面有final进行修饰,所以说不可变
这一点与c++当中我们学习的string还是有所不同的,通过一个小例子我们可以很简单的比较出来。
例如String str1="hello"+"java"相当于str1=“hello java”
String str2="hello java" str1==str2 显示结果为true
但str3="hello" str4="java"str5=str3+str4
这时str5==str2 显示结果为false
所以说,进行字符串比较的时候,一定要使用equals
第一个不同:字符串比较的时候,一定要使用equalr2.equals(str5);
所以接下来学习了能改变字符串的几个类
测试StringBuilder-继承了一个抽象类,这里面的字符串可变,通过源码可以看到!!!
StringBuffer优点:线程安全,效率低。
StringBuilder特点:线程不安全,效率高。
但是我们一般使用StringBuilder;
StringBuffer和StringBuilder的基本用法:
append(字符)-在原字符串后面继续加字符
举例:for(int i=0;i<26;i++)
{char temp=(char)('a'+i);
sb.append(temp);}
sb 为String Builder的一个对象
String Builder当中的几个常用的个方法
sb.reverse()将可变字符串倒转,即abcdef-fedcba;
sb.setCharAt(3,M)将第三个字符改为M
sb.insert(0,“张”)在0处插入一个字符插入我。
通过源码可以发现,insert返回的值为this即自身,所以说可以反复调用,例如
sb.insert(0,“张”).(6,李).(10,黑)等等,为链式调用
sb.delete(20,33)删除某个区间的字符,也是可以链式调用!
接下来讨论的是字符串的拼接问题:
碰到字符串的拼接的问题是,一定要使用append,例如:
StringBuilder sb1=new StringBuilder(" ");
for(int i=0;i<5000;i++){
sb1.append(i);}
时间处理的相关类!Date类
File类代表文件和目录。
File f= new File("d:/a.txt");或者new File("d:\\a.txt")
f.renameTo(new File("d:.txt"))改名 *** 作
一个小知识点:
枚举,如果有必要定义一组常量,定义枚举!
enum 类名{常量}
接下来学习了异常问题,异常问题建档概括用以下几张图来展示一下:
异常,异常机制本质,当程序出现错误时,程序安全退出的机制。
先抛出异常,在进行捕获异常。
异常分类
逻辑判断来排除出来来避免这些异常。
空指针异常!
数组越界异常
接下来学习了java后期用得比较多的容器:
数组的优点:数组是一种简单的纤细序列,可以快速地访问数组元素,效率高。如果从效率和类检查的角度讲,数组是最好的。
数组劣势:并不够灵活!
容器:collection
通过一段简单的代码学习了容器
public static void main(String[] args) {
Collection
mc.set("1", 0);
String b=mc.get(0);
}
}
class Collection
Object[]objs=new Object[5];
public void set(E e, int index) {
objs[index]=e;
}
public E get(int index) {
return (E)objs[index];
}
}
在该段代码中运用到了泛型,泛型对于后期数据分类储存工程有比较重要的意义。
泛型,帮助我们建立类型安全的集合!本质:数据类型的参数化,占位符,在调用泛型时必须传入实际类型。
对于容器中的方法进行了简单的学习:
Collection
c.size();判断一下长度
c.isEmpty();
c.add("");//可以加多个元素进去。
c.remove("");//删除容器当中的元素。
c.clear();//移除所有的元素。
Object[] objs =c.toArray();//将c当中的元素全部转入进数组当中去。
c.contains("");//该方法检测容器当中是否含有该元素。
接下来学习了以后用的比较多的Arraylist类,并且学习了当中的几个简单的方法。
//list01.addAll(list02)将02中的元素全部加入到01当中去
//list01.removeAll(list02)将01 02中共同的元素删除。
//list01.retainAll(list02)取两个容器当中共同的元素。
//set不允许重复,相同的元素。
//List。
//List接口常用的实现类有三个:ArrayList LinkedList Vector
//list.add(位置,E)在索引位置插入元素。
//list.remove(2)将索引位置为2的元素删除。
//list.set(2,“”)在索引位置为2的地方修改元素。
//list.get(索引位置)显示元素。
//list.indexof(元素)返回第一次出现这个元素的位置,如果不存在返回-1.
//list.lastIndxof(元素)返回最后一个相同元素的位置。
//Arraylist底层是用数组实现的存储。特点:查询效率高,增删效率低,线程不安全。
//数组长度是有限的,而Arraylist可以放任意数量的对象,采用的方法是扩容后。
Vector,底层实现和list差不多,需要线程安全时,用Vector。
接下来是Map接口
//map中键不能重复!如果重复(是否重复是根据equals方法来判断),则新的覆盖旧的!
//map.put(1000,e1)e1为类型,指向e1里面的元素。
//HashMap底层实现采用了哈希表,则会是一种非常重要的数据结构。数组+链表,
对比c++有了更丰富的方法进行数组元素的便利-迭代器Iterator
//使用迭代器遍历List/set
for(Iterator
{}
接下来是Collections工具类
//Collections.shuffle(list)随机排列list中的元素。
//Collection.reverse(list)逆序排列
//collections.sort(list)递增排列
//Collections.binarySearch(list,"")在当中查找元素,如果查不到返回-1.
跟随老师进行了一个简单案例
使用容器存储表格数据!
//第一种每一行数据使用一个Map。整个表格使用List来存储。orm思想,对象关系映射。
Map
row1.put("id", 1001);
row1.put("name","张三");
row1.put("salary", 20000);
row1.put("入职日期", "2002.5.4");
Map
row2.put("id", 1002);
row2.put("name","王三");
row2.put("salary", 20000);
row2.put("入职日期", "2003.5.4");
Map
row3.put("id", 1003);
row3.put("name","李三");
row3.put("salary", 20000);
row3.put("入职日期", "2004.5.4");
List
总结:本周的学习并没有学特别特别多的内容,java和c++还是有非常多的不同的,仅此学到这里,感觉javajdk当中提供的一些方法会对于以后写代码比较方便,但仅仅是学到这里的想法,日后还是要更深入的学习,从下周开始要进入io流的学习,接下来就是要敲图书管理系统,要利用花时间,坚持下去!java的学习之路就此开始!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)