java学习心得体会

优短文提供的java学习心得体会(精选4篇),经过用心整理,希望能对您有所帮助。

java学习心得体会 篇1

1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。

2)java的堆和栈的区别:

堆:是一个运行时数据区,类的对象从中分配空间。这些对象通过new,newarray,anewarray和muitianewarray等指令建立,它们不需要程序代码来显示释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是运行时动态分配内存的,Java垃圾收集器会自动收走这些不再使用的数据。但是缺点是:由于是要在运行时动态分配内存,存取速度较慢。

栈的优势:存取速度比堆要快,仅次于寄存器,栈数据可以共享。缺点是,存在栈中的数据大小与生命期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量

(int,short,long,byte,float,double,boolean,char)和对象句柄。

3)java算法:

1、冒泡排序:从头开始,依次对相邻的两个元素进行比较,发现有顺序错误就将它们调换过来!重复地进行,直到没有元素需要交换。是稳定排序法,最好的时间复杂度是O(n);

2、快速排序:思想是(Divide)选取一个基元X开始(一般选取数组的第一个元素),通过某种分区操作将数组划分成两个部分,左边部分小于等于X,右边部分大于等于X。(Conquer)左右两个子数组递归地调用Divide过程,(Combine)快排作为就地排序算法,不需要任何合并操作!

3、递归:程序调用自身,并非不会无休止地调用下去,需要有一个出口,当满足条件时程序也就结束!不然的话,就会出现程序死循环。

4)JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收:第一个就是当应用程序线程空闲,另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆的'不足。

4)、junit测试的方法的类型必须是public ,其他类型运行时会报错。方法的返回类型也必须是void,并且不能有参数。

5)、List

args = null; args.add(param);//这样会报错

分析原因:List是一个接口,没有实现是不能使用的,需要ArryList的实现类或者其他实现类才能使用

应该改为:List

args = new

ArrayList

();args.add(param);

6)、如A是父类,B是继承于A,两者都有构造函数和A有print(),B也覆盖了A的方法,那么可以A a = new B();此时a.print();调用的是B的print()方法,如果B的print()没有覆盖父类的方法,而是自己创建的print();那么这时a.print();调用的还是B的print()方法。另外,假设A有print1()方法,B没有覆盖A的print1();这时a.print1();不会报错,它

将调用的是A自己的print1()方法。最后,加入A没有了print()方法,而是print()是只有B有,这时a.print();将直接调用B的print();方法,总结: 对于类的继承,父类通过子类实例化后,构造方法都在先执行父类的构造方法,再依次执行子类的构造方法。方法的调用原则是先执行子类的方法,如果子类复写了父类的方法,将执行子类的方法,如果子类没有复写父类的方法,但是方法重名,也会只执行子类的方法。如果子类没有对应的方法,那么就执行父类的方法!(不要以为子类没有该方法编译器会报错,因为继承了父类的方法!)请注意:B b = new A();编译器会报错,这也是不合逻辑的!

java学习心得体会 篇2

1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。

2)java的堆和栈的区别:

堆:是一个运行时数据区,类的对象从中分配空间。这些对象通过new,newarray,anewarray和muitianewarray等指令建立,它们不需要程序代码来显示释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是运行时动态分配内存的,Java垃圾收集器会自动收走这些不再使用的数据。但是缺点是:由于是要在运行时动态分配内存,存取速度较慢。

栈的优势:存取速度比堆要快,仅次于寄存器,栈数据可以共享。缺点是,存在栈中的数据大小与生命期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量

(int,short,long,byte,float,double,boolean,char)和对象句柄。

3)java算法:

1、冒泡排序:从头开始,依次对相邻的两个元素进行比较,发现有顺序错误就将它们调换过来!重复地进行,直到没有元素需要交换。是稳定排序法,最好的时间复杂度是O(n);

2、快速排序:思想是(Divide)选取一个基元X开始(一般选取数组的第一个元素),通过某种分区操作将数组划分成两个部分,左边部分小于等于X,右边部分大于等于X。(Conquer)左右两个子数组递归地调用Divide过程,(Combine)快排作为就地排序算法,不需要任何合并操作!

3、递归:程序调用自身,并非不会无休止地调用下去,需要有一个出口,当满足条件时程序也就结束!不然的话,就会出现程序死循环。

4)JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收:第一个就是当应用程序线程空闲,另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆的不足。

4)、junit测试的方法的类型必须是public ,其他类型运行时会报错。方法的返回类型也必须是void,并且不能有参数。

5)、List

args = null; args.add(param);//这样会报错

分析原因:List是一个接口,没有实现是不能使用的,需要ArryList的实现类或者其他实现类才能使用

应该改为:List

args = new

ArrayList

();args.add(param);

6)、如A是父类,B是继承于A,两者都有构造函数和A有print(),B也覆盖了A的方法,那么可以A a = new B();此时a.print();调用的是B的print()方法,如果B的print()没有覆盖父类的方法,而是自己创建的print();那么这时a.print();调用的还是B的print()方法。另外,假设A有print1()方法,B没有覆盖A的print1();这时a.print1();不会报错,它

将调用的.是A自己的print1()方法。最后,加入A没有了print()方法,而是print()是只有B有,这时a.print();将直接调用B的print();方法,总结: 对于类的继承,父类通过子类实例化后,构造方法都在先执行父类的构造方法,再依次执行子类的构造方法。方法的调用原则是先执行子类的方法,如果子类复写了父类的方法,将执行子类的方法,如果子类没有复写父类的方法,但是方法重名,也会只执行子类的方法。如果子类没有对应的方法,那么就执行父类的方法!(不要以为子类没有该方法编译器会报错,因为继承了父类的方法!)请注意:B b = new A();编译器会报错,这也是不合逻辑的!

java学习心得体会 篇3

在java的海洋中遨游一年的时间,从面向对象的思想到IO流到网络编程,我不断的接触到java基础知识,在学习过程中不断进步,不断成长。

作为一名软件工程的学生,学习java是我学习的重中之重,在长达一年的学习过程中,我也对java也有新的认识。

在学习java时,会问问自己为什么要学习java?在当今时代,Java仍然是世界上最受欢迎的编程语言之一,有无限多种方法使用Java。据xx年数据显示,Java被评为最受欢迎的编程语言之一;最新的一些报告证明,Java程序员是业内薪资最高的程序员之一。根据全球数字化业务媒体机构的分析,拥有Java技能有利于升值加薪;同时,java是零基础的和基础薄弱的'学员可以很容易的接受的一种语言。

我在漫长的学习java的岁月中,遇到了许多大大小小的困难。首先,在学习java开始中,老师往往会布置很多代码题进行实操或者书写在作业本上。在刚刚开始的几次作业中,我往往因为自己的浮躁与不耐烦,直接向同学要他们的代码把作业上交,但渐渐的发现,课堂跟不上,成绩不佳,我陷入了迷惘中……后来,意识到自己学习java的态度与方式是不对的,经过调整,也有了自己的一份学习java的心得体会。

java的学习基础——C语言,意识到在课上听不懂的原因也来自于自己在大一上学期并没有把C语言学习透彻,所以我会利用课后的时间看网上的视频来让自己的C语言基础提高。

java的学习需要理解代码的思路。在写代码与学习java知识点时,往往对于每句代码都应该理解透彻,在以后的代码书写中,自己才能写出正确的代码,甚至于找出自己的代码错误。这对于代码的理解透彻,就需要自己在上课时,好好理解老师的代码思维,自己也需要多看看关于代码的书,加深理解。

java的学习需要保持良好的心态。在进行代码实操时,自己写出大量的代码却运行不出结果。这时,自己并不能因为不耐烦与困难的打击就直接放弃,而是要进行学习,通过自纠,问同学,找课外知识来解决问题。同时,在学习java的漫漫长路中,坚持是十分重要的。在坚持中,找寻学习的方式,让自己进步与成长。

java的学习需要多做,多思考。在java学习中,不仅要学会打课内的代码,也需要通过百度找寻课外的代码,举一反三,自己解决很多的问题。

在这一年的学习中,我对于java有了初步的认识与了解,我知道自己真正掌握java还需要一段时间的学习,但我相信我自己只要有颗想学习好java的心,对于以后的困难是不惧怕的,我相信在学习java中,自己是在此过程中不断成长的,进步的。

java学习心得体会 篇4

学习任何语言(包括英语),基础一定要打好,没有学会走路跑步不可能快吧,学习java的心得体会。所以学习JAVA一定要先把JAVA的几个基本组成元素学好。以下是我总结出来的学习顺序和注意事项:

1、数据类型 JAVA是一种强类型语言,各种类型不会自动转换,使用前必须先定义。

2、方 法 方法相当于定义一个"宏"、一个"函数", 方法的定义格式为:

"说明符 修饰符 返回值 方法名(参数){方法体}。"

在学习方法的时候要注意"说明符、"修饰符"、"返回值"这三样东西。

我们在调用JAVA的自带的"类"里面的"方法"的时候,我们一开始是不用看懂这些方法里面写什么(当然,你能看懂是最好)。我们只要知道,使用了这个方法后,"返回值"的"类型"说明

3、类 在JAVA中最经常听到词,也是最麻烦的东西,类的定义格式为:

说明符 class 类名 extends超类名 implements 接口名{主体}

4、变量常量 JAVA的常量名一般用全大写字母表示,并且为了节省内存,一般定义为静态(JAVA程序中的名字我们经常有个默认的规则,类名所有单词第一个字母大写,方法名第二个单词开始第一个字母大写,变量名小写,这样我们一看程序就非常清楚了,从小养成良好的习惯嘛,呵呵),变量的定义格式为:

"修饰符 数据类型 变量名"

变量在类中定义(不在方法体中的部分称为域)和在方法体中定义是不同的(在方法体中定义不需要修饰符),心得体会《学习java的心得体会》。学习变量的.时候要注意两个特殊的东西"this"和"super"。同时我们就要学习什么叫"覆盖"、"重载"。

5、控制流 所有的编程语言的控制语句无非就是几个if else for while do switch。

6、接口: 一个抽象的东西,接口可以多继承,解决了类只能单继承的问题。接口的定义格式为:

说明符 interface 接口名{主体},

接口内的方法都是没有主体的,只有常量或变量。当类使用接口的时候,一定要"覆盖"接口的方法。

7、线程:线程是个比较复杂的东西,例如一个赛马程序有七匹马赛跑,就有七个线程,看起来好象是同时在跑,其实是计算机分配不同的时间段让七个线程运行。我们初学者的程序可能还用不上。

到这里为止,JAVA的基本概念我们有一定的了解了,我们就开始研究JAVA的类了。JAVA的核心API(也就是SUN公司已经为我们写好的类)有以下几种。(还有其他很多的扩充类)

猜你喜欢