首页 > 代码库 > java学习心得
java学习心得
从构建第一个java的项目,构建第一个类开始,在面向对象先导课中,从一个java的门外汉,到逐渐开始利用java完成一些小的代码,这个过程可以说是一边迎接着新的挑战,一边感受着自己的喜悦。
java第一次给我冲击的感觉,就是在一开始的时候,运用多个类和类中的方法和构造器,来使代码变得更加简洁有效。在第一次课堂练习上从静态和非静态方法的区别,和构造方法的继承,和继承的子类里的注意事项,以及父类中数据类型继承的区别,
都给了新奇的体验,也许面向对象的思想就是在这时慢慢生成了萌芽。
如:
class A{ public static void a(){} public void b(){} } public class B(){ public static void main(String[] args){ A.a();//静态 new A().b();//非静态
而java中的构造方法 则在用new初始化一个类的时候,就有效的利用了构造方法进行运算;如果new对象没有定义构造方法,那么会默认添加一个构造方法;
使用构造方法的快捷之处在于初始化对象。因为构造方法在创建对象的时候自动进行,所以一般不能够显式地调用构造方法,同时在一个类作为父类被继承的时候,构造方法是不能够直接继承的,需要通过super:
public Class Box(){ public Box(double x,double y,double z){ } } public Class ScaleBox extends Box(){ public ScaleBox(double x,doubley,double z) {super(a,b,c)} }
学习编程不可避免地要碰到对字符串和字符串集合的操作,在java中,同样可以对字符串进行分割操作,也能对一个字符串集合进行操作,
java可以改写toString方法和split方法,但是更多情况下使用Java自带的这些字符操作方法会十分的方便。
同时,Java的学习也涉及到了对文件的读取和写入等操作。在学习过程中老师鼓励我们自己动手查阅网上和各类博客上的信息,
学会一种自己适合的文件处理方法,再学习其他几种方法并比较中间的异同。
String fileInPath = "文件地址"; File fileIn = new File(fileInPath); FileReader reader = new FileReader(fileIn);
java在几种容器和迭代器Iterator上的遍历极其方便,容器本身作为一个可以扩展的载体,相比于数组就更具与灵活性,既不用担心数组溢出这样的问题,也能够避免数组一次性开太大而造成的空间浪费(虽然很大的数组并不会占据多少内存)。
容器不仅在使用上有着安全性,灵活伸缩的容量可以避免数组溢出的潜在危险。同时,使用容器还便于保护了数据的统一性质,在一次家庭作业中,我查阅资料发现容器Arraylist的对象不仅仅可以是String类型或者Integer类型,还可以自己创建的某个类,比如一个类中如果保存了String和Integer两种不同类型的数据的时候,就可以通过Arraylist来将关联的信息绑在一起不容易丢失。比如这个TokenString类就作为Arraylist的数据类型出现:
protected ArrayList<TokenString> List; protected int wordnum; /*将整个类直接作为容器的对象,而不只是存储String*/ public TokenManager(){ this.List = new ArrayList<TokenString>(); this.wordnum = this.List.size(); }
在最后的课程中,我们努力使自己的程序效率更高,思考着更为精简的方式,思考怎么样在要操作的文件容量急剧增加的同时,不必要消耗过高的内存过长的时间。
同时,在层出不穷的难题前学会翻阅别人的博客,学习别人的经验和知识,接受新事物使用新工具。比如java自带的排序方式和自带的hashmap这样高效的数据结构。
往往在使用这些工具的同时,就会产生一些新的问题需要我们去解决,比如怎样将hashmap储存的数据进行遍历和排序输出,
在java的使用时也碰到过一些i问题,比如当使用eclipse的时候,由于所用电脑老化和内存较小等问题的存在,有时候使用eclips会陷入极其卡顿的情况,这时候关闭一些自动编译的功能,在网上搜索类似修改eclipse.ini文件等等的方式,使用Java的时候也变得更加流畅,同时,产生一些自己解决不了的问题时候善于求助于网上的经验和身边的同学们,往往有时候自己无法弄明白的问题被点拨一下就会有茅塞顿开的感觉。
java中可以改写的东西很多 比如hashcode比较方法,比如compareto方法,改写可以用很少的代码量进行高效的操作
如:
/*comparator.sort排序*/ Collections.sort(this.List, new NameComparator()); Iterator<TokenString> Iter = this.List.iterator(); import java.util.Comparator; @SuppressWarnings("rawtypes") public class NameComparator implements Comparator{ public int compare(Object object1,Object object2){ TokenString word1 = (TokenString)object1; TokenString word2 = (TokenString)object2; int result = word1.word.compareTo(word2.word); return result; } }
稍微改写一下compareto的规则,就可以对复杂的数据按照不同的规则进行排序。
例如Arraylist中的五个元素,ABCDE各自包括了数字,字符串等信息,就可以根据信息种类的不同设置多种comparator接口,
这样当改变排序和比较规则的时候只需要更换一个比较器,而能够保证改动很少的代码,确保代码的茁壮性。
面向对象的理念无异于使得多人完成同一工程的协调性大大增强,为了更好地达成协作,在使用java的过程中对自己的类名,方法名,变量名的使用就要极其小心才对,要养成良好的规范,也便于代码的流通和重复使用。
封装好的类和方法甚至不需要完全了解其中的工作原理和数据结构,只要明白输入输出的规范就可以妥善使用别人的类和方法,这其中也包括了java内置的hashmap等数据结构。可以说,面向对象编程的思想让代码之间的维护和使用变得更加畅通。
java学习心得