Java学习过程应该深入理解的一些重点

过程

主要说说Java的几大块吧,无法说得很细,因为其实每一块拿出来都能说很多,我就说一下这几块学习的时候的重点或者应该注意的东西。

数值类型:

虽然是面向对象的语言,但是在使用上数值类型还是必不可少的,如果在C的学习中已经掌握了C的数值计算和转换规则,那我想这里应该没有什么问题,只有两点需要注意:1、14.0这样的浮点常量被认为是double型,只有加上f后缀才是float型的;2、整数常量说起来被认为是int型,但是在编译时,可以认为编译器将其看作能表示该数的最小数值,因此byte b = 100;不会报错。

引用类型:

引用类型:

我也是从C/C++转过来的,其实所谓引用类型在C++中已有体现,就是传参的时候有一种引用类型,从C来考虑,它就是一个指针,只不过,我们不能对它进行指针上的硬操作。所以这里的重点是:1、Java里所有的对象都是在堆中生成的,所以需要类似指针的东西指向它,那就是引用;2、我们通过引用操作的是引用所指向的对象,除了赋值操作外,应该就没有什么操作是针对引用本身的了,这一点是C的指针与Java的引用区别所在。

类和对象:

这是一个大块,有很多东西,不展开讲了,就说几个重点:1、类方法、类属性与成员方法、成员属性在加载、初始化、使用上的异同;2、在构造函数中,this()和super()的用法;3、子类的加载过程、初始化过程和构造过程;4、方法的重载和覆写;5、覆写所引出的多态问题。(注意:多态之应用在方法上,对属性没有作用)

函数调用的参数传递:

如果把引用类型所记录的地址值,就看作是引用类型变量的值的话,那么,Java的所有方法调用的时候,都是采用的值传递??数值类型传数值,引用类型传地址。

IO流:

与C比起来,Java的输入输出,尤其是输入是非常麻烦的,也许是因为出于面向对象的考虑吧?不知道。Java提供了很多的IO流,但是我们并不必将各种IO都搞清楚,我们只需要了解字节流与字符流各有什么功能,字符流是如何在字节流之上构造的,几乎所有的字符流构造的时候都是建立在一个已有的字节流的基础上的,并且它的这种设计使得我们可以像套管子一样,将IO流一节一节套起来,直到得到我们想使用的IO对象(例:BufferedReader的使用)。在我们以后使用的时候,我们可以再去查API,我觉得主要要看的几个类是:FileReader、FileWriter、BufferedReader,再配合上System.out对象,对于文本的输入、输出来说,就足够用了,至于其他的,我觉得不考试的话,没有必要看那么多,用的时候再看了。(我使用Java一年半来,基本上就在使用BufferedReader和System.out)

容器:

个人认为,这是Java编程的一大利器,我最爱用的类是:ArrayList(List)作为可变长数组、HashMap(Map)用来建立查找表,Set我很少用,只在HashMap的使用中连带用过一些。通过对这两个类的熟悉,能够将List、Set和Map三大类的基本用法掌握。另外它的几个辅助类要掌握:Iterator和Collections。Collections类提供容器的一些通用工具,比如排序。而说到排序,就牵扯出了比较器:Comparator。能够熟练使用Comparator类,可以让你为自己的需求和自己的类定制排序方案。

AWT和SWING:

个人认为,Java在图形界面的制作上有着非常好的封装性,我以前曾经试图学过MFC,MFC在生成图形界面的时候会帮助你生成一些代码,然后让你在这些代码的指定位置添加代码以实现功能,我这个人有个习惯,如果让我看到了一些东西,那么我不搞清除为什么这么写,就不会往下走,看到那许多代码,自然就想弄清楚那些是什么,结果引出来好多知识,后来我才知道其中有些是调用WinAPI,结果我到现在还是不会用MFC。这里并不是贬低MFC,我相信MFC有其过人之处,只不过个人认为它的封装性做得不好,暴露出了太多东西,也许能够提高灵活性,不过,可能我跟它无缘:(。在这方面Java就做得不错,给你一个类,你用就是了,它将图形界面的低层实现隐藏的很好,将其作为一个对象给你,而你只需要在这个对象上修修改改,挺方便的。

作为初学者,我觉得AWT的重点在于它的几个Listener的用法,还有布局格式,然后就是那许多的Component的用处和用法。(不过,我觉得,等到用的时候再去找合适的Component进行学习应该也不算太迟 ^_^)

不过,因为我个人使用的原因,所以至今AWT和SWING都用得很少,所以这方面也就不便多说了,抱歉。写这些并不是告诉大家怎么解决问题,因为每一个都有很多可写,只是希望能给初学者一点参考,希望能够帮助初学者们有的放矢地看书。

时间: 2024-10-26 23:21:34

Java学习过程应该深入理解的一些重点的相关文章

耦合-求指教,关于JAVA接口,这样理解对不对?

问题描述 求指教,关于JAVA接口,这样理解对不对? 把接口看作是电脑上的USB接口,USB接口里有一种方法定义了一种规范,外部的usb设备比如usb鼠标,usb风扇在这个规范下具体实现了鼠标和扇风的功能,这样,人类可以使用usb这一种东西来调用usb接口外部的不同功能,需要改动的时候,只需要把能够实现所需要的功能的usb设备的线接到usb接口上就行了,而不用去做大量改动. 这么理解有什么偏差吗?求指教 解决方案 你可以有不同的理解,这没有任何问题. 当然,我觉得更接近编程思维的理解是,接口是一

聊聊我对Java内存模型的理解

所有的编程语言中都有内存模型这个概念,区别于微架构的内存模型,高级语言的内存模型包括了编译器和微架构两部分.我试图了解了Java.C#和Go语言的内存模型,发现内容基本大同小异,只是这些语言在具体实现的时候略有不同. 我们来看看Java内存模型吧,提到Java内存模型大家对这个图一定非常熟悉: 这张图告诉我们在线程运行的时候有一个内存专用的一小块内存,当Java程序会将变量同步到线程所在的内存,这时候会操作工作内存中的变量,而线程中变量的值何时同步回主内存是不可预期的.但同时Java内存模型又告

java里的多态理解的模模糊糊的,到底什么是多态?多态和类是什么关系?和对象呢?

问题描述 java里的多态理解的模模糊糊的,到底什么是多态?多态和类是什么关系?和对象呢? java里的多态理解的模模糊糊的,到底什么是多态?多态和类是什么关系?和对象呢? 解决方案 多态,顾名思义就是一种概念,多种形态. 在Java中,泛型.继承和复写方法.函数重载都体现了多态. 具体你可以看维基百科上对应的词条. 解决方案二: 你只要记住 1.同一类中,方法的**重载**是多态的体现. 2.在不同的类中(继承),方法的**重写**也是多态的体现 解决方案三: 需要搞清楚面向对象的三大特征,封

实例-java的单例模式怎么理解?

问题描述 java的单例模式怎么理解? 我是这样认为的:因为类中的方法都是static方法!所以这个类不管怎么实例化 都只有唯一的static方法 实例存在 这样认为对吗?求教怎么理解? 解决方案 骚年,你的理解偏颇了... 单例模式,顾名思义,就是在某个环境里,不管怎么实例化,只能产生唯一对象. static方法只是个特殊的动作(特殊在于它是类(不是对象的)的动作),这个动作可以被执行多次, 并且没有限制里面处理内容,所以完全可以产生多个对象(你无法阻止),static方法跟产生几个对象没有直

java异常的基本理解

java异常的基本理解 代码: package kun.exception; public class test { public static void main(String arg[]) { try{ myExceptoin(3); myExceptoin(4); myExceptoin(1); } catch(Exception e) { System.out.println(e.getMessage()); } } //如果该方法可能抛出一个异常,就要在定义方法的时候使用throws声

Java学习过程的一些重点

主要说说Java的几大块吧,无法说得很细,因为其实每一块拿出来都能说很多,我就说一下这几块学习的时候的重点或者应该注意的东西. 数值类型: 虽然是面向对象的语言,但是在使用上数值类型还是必不可少的,如果在C的学习中已经掌握了C的数值计算和转换规则,那我想这里应该没有什么问题,只有两点需要注意:1.14.0这样的浮点常量被认为是double型,只有加上f后缀才是float型的:2.整数常量说起来被认为是int型,但是在编译时,可以认为编译器将其看作能表示该数的最小数值,因此byte b = 100

【分享】Java反序列化漏洞从理解到实践

一.前言 在学习新事物时,我们需要不断提醒自己一点:纸上得来终觉浅,绝知此事要躬行.这也是为什么我们在学到知识后要付诸实践的原因所在.在本文中,我们会深入分析大家非常熟悉的 Java发序列化漏洞 .对我们而言,最好的实践就是真正理解手头掌握的知识,并可以根据实际需要加以改进利用.本文的主要内容包括以下两方面: 1.    利用某个反序列化漏洞. 2.    自己手动创建利用载荷. 更具体一点,首先我们会利用现有工具来实际操作反序列化漏洞,也会解释操作的具体含义,其次我们会深入分析载荷相关内容,比

Java反序列化漏洞从理解到实践

一.前言 在学习新事物时,我们需要不断提醒自己一点:纸上得来终觉浅,绝知此事要躬行.这也是为什么我们在学到知识后要付诸实践的原因所在.在本文中,我们会深入分析大家非常熟悉的Java发序列化漏洞.对我们而言,最好的实践就是真正理解手头掌握的知识,并可以根据实际需要加以改进利用.本文的主要内容包括以下两方面: 1. 利用某个反序列化漏洞. 2. 自己手动创建利用载荷. 更具体一点,首先我们会利用现有工具来实际操作反序列化漏洞,也会解释操作的具体含义,其次我们会深入分析载荷相关内容,比如什么是载荷.如

Java初学者都必须理解的六大问题

初学|问题 对于这个系列里的问题,每个学Java的人都应该搞懂.当然,如果只是学Java玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列. 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是"Hello world!".这样模糊的回答通常是概念不清的根源.如果要准确的回答,一半的人大概会回答错误. 这个语句声明的