
JAVA SE
文章平均质量分 66
superhill
这个作者很懒,什么都没留下…
展开
-
Java赋值和参数传递
程序中的赋值和参数传递,一种比较普遍的说法是包括2种类型:passing by value 和 passing by reference。其实个人觉得不必太纠结这个概念,对于Java来说,是没有passing by reference的说法的。可以将其看做是原生数据类型(Primitive)的传递和引用数据类型(Object)传递,而无论传递原生数据类型还是引用类型,统一都是传值。原生数据类型原创 2012-04-10 18:46:12 · 5011 阅读 · 1 评论 -
Java Swing之Layout Components
Swing除了可以使用绝对位置来定义布局之外,更常见的是使用J2SE平台提供的各种Layout Managers。(GroupLayout是针对辅助布局工具的,比如NetBeans,通过代码的形式是不会用到GroupLayout的,更有用的是GridBagLayout,它是最灵活和强大的Layout Manager)。主要的有8种:1.BorderLayout 默认的content原创 2013-05-15 20:11:51 · 1369 阅读 · 0 评论 -
Java Swing入门
Java Swing相当于升级版本的AWT(Abstract Window Toolkit),是一组易于使用和理解的JavaBeans。大多数的Swing应用都是建立在基础的JFrame的内部,JFrame在任何操作系统中都可以创建视窗应用。最最简单的Swing程序可能就是public class HelloSwing{ public static void main(Str原创 2013-05-23 05:07:16 · 3269 阅读 · 0 评论 -
static, super, final, this关键字
1.static是"静态","全局"的意思,用来修饰成员变量,成员方法,或者也可以形成静态代码块。被public修饰的static变量和方法就是全局变量和全局方法a.在类中,用static声明过的成员变量为静态成员变量,为该类的公用变量,独立于该类的任何对象。静态变量为所有对象共享,存放在数据区data segment。在类初次被加载的时候被初始化,所以,在任何对象创建之前,就可以对静原创 2012-05-02 03:43:40 · 2414 阅读 · 0 评论 -
访问权限控制
1.之所以会有访问权限的控制,是因为类库的消费者希望它们所依赖的那部分类库在某些方面保持不变,而对于开发人员来说,代码总是需要重构才能变得更加完善。因此,需要把变动的和不变的部分区分开。2.按照从最大权限到最小权限排序,public,protected,默认,private3.作为一名类库设计员,必须牢记,package和import关键字允许你做的,是将单一的全局名字空间分隔开,原创 2012-05-01 23:43:32 · 475 阅读 · 0 评论 -
构造方法
1.一个类中至少有一个构造方法,如果没有定义的话,编译器会自动为其定义一个 类名(){ } ,它是定义在java类中的一个用来初始化对象的函数。但是需要注意的是,一旦你定义了其它任何构造方法,系统就不会为你添加空的构造方法了。所以有时候如果想在创建对象的时候实现初始化任务,注意构造方法的定义和对象的创建方式。2.所谓构造方法,就是把自己构造成一个对象。说起来,如果你想new一个新的原创 2012-04-14 05:24:22 · 6283 阅读 · 0 评论 -
多态
1.多态是java中封装和继承之外的第三个基本特征,我觉得也是java最核心的东西,也叫动态绑定,或者后期绑定,或者运行时绑定。在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用相应的方法。2. 多态理解起来比较抽象一些,举个例子,宝马是车,台灯是灯,拿铁是咖啡,吉他是乐器。多态的存在有3个条件,1)要有继承 2)要有重写3)父类引用指向子类对象(原创 2012-05-01 23:02:38 · 3583 阅读 · 1 评论 -
容器
1.容器相关的接口和类的结构图 interface (Collection) interface (Map)原创 2012-05-01 23:47:50 · 389 阅读 · 0 评论 -
Effective Java读书笔记 第二章: Creating And Destroying Objects
Item 1,考虑使用静态工厂方法而不是构造方法来创建对象好处1.使用重载构造方法并不是一个好主意,有时候你根本记不清哪个是哪个。可以尝试用静态方法来返回一个类的对象,只要取名得当,可读性可以增强。如果一个类需要多个构造方法,那么你可以考虑使用不同的静态方法来替代它们,并且分别使用可读性很强的方法名,这样使用者并不需要去查阅相关的文档就可以直接使用。2.使用静态方法相对于构造器来说还有原创 2013-06-10 18:51:06 · 889 阅读 · 1 评论 -
异常处理机制
Java异常是java提供的用于处理运行时错误(比如说除0溢出,数组下标越界,所要读取的文件不存在,等等)的一种机制。设计良好的程序应该在异常发生的时候提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或者产生不可预见的结果。当一个方法里面出现错误时,该方法就会创建一个异常对象(包含了错误的信息,错误的类型,发生错误时程序的状态),然后把这个对象传给运行时系统,这个过程叫做Throwing原创 2012-05-01 23:44:50 · 563 阅读 · 0 评论 -
数组
1.数组---相同类型数据的集合,定义很简单 type[] 变量名=newtype[数组中元素的个数];数组初始化比如int[] array = new int[5]; 这一点很重要,不能直接定义int[5] array;c语言可以,但是java不行,必须用new的方式来进行定义。然后再 int[0]=1; int[1]=2;.......还有一种方式就是 int[原创 2012-05-01 23:46:41 · 358 阅读 · 0 评论 -
泛型
首先提醒一句,Java编程追求的境界是编写更加通用的代码,使得代码能够应用于“某种不具体的类型”。泛型的意思就是适用于许多许多的类型。总的来说泛型是为了对操作类型进行一定的约束,从而使得可能发生在运行时的一场在编译的时候就被发现,这样就减少了出错的概率。常常会遇到使用容器的时候,放对象进去,然后在什么地方又要取出来。如果没有泛型的话,那么每次拿出来的时候必须进行一个向下类型转换。有原创 2012-07-31 15:34:33 · 501 阅读 · 0 评论 -
Java数组排序算法,冒泡,选择,插入,快速排序
1.冒泡排序冒泡排序广泛用于数组排序,大致原理就是从第一个数开始,通过和后面一个数相比较,将较大的往后挪,一一比较之后,将最大的放到最下面。第一次比较完毕将最大的数字放到最后面,第二次比较结束以后将第二大的数字放到倒数第2位,依次进行。其中,第5行之所以要减去(i+1),是因为每放一个最大的数字到最下面,他们就不用再比较了,也就是说它们的位置就定好了。第i次循环的时候,就已经有i+1个不用原创 2012-08-06 04:01:34 · 6692 阅读 · 0 评论 -
容器的分类
Lista.List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,并且可以重复。b.List容器中的每一个元素都对应一个整型的序号,用于记载该元素在容器中的位置,可以根据序号存取元素c.主要的2中List,ArrayList和LinkedList.d.ArrayList底层是数组实现的,LinkedList底层是链表实现的。e.很多常用方法都可原创 2012-05-02 02:45:10 · 743 阅读 · 0 评论 -
Java的一些基本特性
之所以面向对象的编程好,很大程度上因为它们的重用性,可扩展性,维护和替换更加方便。作为面向对象的程序设计语言,Java有三大特征:封装(encapsulation),继承(inheritance),多态(polymorphism)。在设计的时候,首先应该考虑这个项目需要哪些类,然后考虑每个类需要什么属性和方法,最后考虑各个类之间有什么样的关系。通常来说,要看需要构建哪些类,主要整个项目中大概要从名原创 2012-02-20 18:47:19 · 880 阅读 · 0 评论 -
Java和c++比较
总结一下Java的小知识,只是想稍微提醒一下自己这些基础的东西,放在这里,随时可以阅览和添加一下,以免走错了方向。1.面向对象程序设计面向对象程序设计语言可以直观的反映客观世界的真实表象,使软件开发人员可运用人类认识事物所采用的一般思维方式来进行软件开发,与自然语言差距最小,是当今软件开发与应用的主流技术。Java是纯面向对象的编程语言。2.几个概念a.JavaApplicatio原创 2012-02-20 02:04:20 · 3689 阅读 · 0 评论 -
调试程序
记录一些调试程序的方法1. System.out.println(xxxxxx);这个是最简单的方法,通常打印一行出来,然后在调试窗口看看输出不输出,从而判断有没有执行。有时候为了方便跟踪是哪个类的打印,还会加System.out.println(getClass().getSimpleName() + "xxxxxx");2.try...catch...通常为了看原创 2013-01-14 21:43:10 · 535 阅读 · 0 评论 -
方法重载
方法重载在我看来其实只是一个概念,没有什么复杂的意思,英文是Overload,表示的意思就是:同一个类中2个或者多个方法的名字相同,但是方法的参数不同。参数不同又分为2种情况:1.参数的数量不同,2.参数的类型不同,而方法的返回值对重载没有任何影响,因为你调用方法的时候不会调用方法类型,只会用到方法名和参数。方法重载的概念其实最常见的地方就是构造器,常常是一个类中有多个构造方法,它们有相同的名原创 2012-04-10 20:10:01 · 5534 阅读 · 0 评论 -
继承
继承是java三大特性之一(另外两个是封装和多态)通常只要你能说通 xx是xx的一种,就能用继承,java是单继承的,意味着一个类一次只能从另一个类继承,但是可以从很多不同的类选择一个来继承,比如熊猫,可以从动物继承,也可以成需要被保护的东西继承。被继承的类叫做父类(基类),继承的类叫做子类。java中的继承使用extends关键字。首先举个简单例子:publ原创 2012-05-01 22:43:08 · 603 阅读 · 0 评论 -
抽象类和接口
1.抽象类1)抽象方法:只有声明没有实现的方法。可能这个方法不需要实现,但是必须要定义,因为,假如你要实现多态的话,你父类里面必须有这个方法才行。这个时候就用抽象方法来定义,表明只有定义,没有实现,具体实现由子类自己决定。抽象方法就是拿来被重写的。举例 : public abstract void myMethod(); 后面连花括号也没有。2)抽象类:抽象类的意思原创 2012-05-01 23:42:34 · 694 阅读 · 0 评论 -
网络编程
网络编程就是socket编程,通常来说就是TCP和UDP的应用。1.先说TCP吧TCP是可靠的,端到端的字节流传输协议。首先,必须建立连接,然后每发一个东西对方都必须确认,一定是按照顺序传输的,不会乱。一端有一个ServerSocket,一直在监听某个端口(通常使用1025-65535),另一端是一个Socket,试图向ServerSocket发送请求。两端连接原创 2012-05-02 03:40:32 · 1071 阅读 · 0 评论 -
线程的2种实现方式
1.继承Thread类声明一个内部(外部)类,假如名字叫做 Thread1,继承Thread类,重写(Override)其中的run方法。定义一个类,里面再定义一个Thread1类型的对象,调用start()方法。举个例子吧:public class ThreadTest1 {public static void main(String[] args){原创 2012-05-02 02:52:19 · 1600 阅读 · 0 评论 -
JUnit
为什么要进行单元测试? 平时最简单的方法就是写main方法,进行测试。但是这个方法并不好。为什么,假如类有很多,方法很多,改动很多,那你写main方法就写死了。100个类,就得写100个main方法,而且需要人为地观察结果。JUnit测试过的方法一定可以用,而且之后在这个方法上再写的方法出错的可能小。虽然写JUnit也花时间,但是很值得。另外就是后期维护,如果你的代码不够健壮,那么原创 2012-05-02 03:57:27 · 563 阅读 · 0 评论 -
线程池
1.背景为了提高程序的运行效率,Java引入了多线程机制。在初期阶段,或者说在项目规模不大的情况下,我已经习惯了简单地使用多线程来解决一些问题。但是一旦项目的规模增大,用户的人数增多。特别是带有社交性质的网站或者游戏,往往用户数量至少都是百万级的,甚至以亿计,那么每秒钟用户发出的请求数量也会达到相同的级别。其实,在面向对象的编程过程中,创建和销毁对象都是很费时间和内存资源的。因为,如果原创 2012-08-02 03:58:10 · 678 阅读 · 0 评论 -
线程同步和线程死锁
1.线程同步,一个关键字:synchronized为什么有这个东西呢,假如有一个对象,里面有成员变量和方法,如果有很多线程都想访问它们,有可能造成用户想避免的结果。我也举那个经典的例子:假如你的银行账户里面有2000块钱,有一天你去银行柜台取钱,取1500,正在你办理的时候,你老婆去了取款机,她也取钱,事先没商量好谁取,所以她也想取1500。如果两个人都取走了1500,合起来就30原创 2012-05-02 02:54:08 · 42056 阅读 · 3 评论 -
线程
线程是一个程序里面不同的执行路径,而进程其实是一个静态概念,比如说一个类。操作系统几乎都支持进程的概念,大多数的现代的操作系统也支持线程的概念。我们现在使用的操作系统几乎都是多任务分时操作系统,多线程的概念也正是应这种操作系统而生的。多任务分时意味着在同一时间可以执行多个程序(比如又在浏览网页,又在听歌,又在聊天).但是实际上是什么情况呢,实际上cpu并没有同时执行这些程序,cpu只是把时原创 2012-05-02 02:50:50 · 629 阅读 · 0 评论 -
Java集合对象排序
1.List排序这个和数组的排序又不一样了。其实Java针对数组和List的排序都有实现,对数组而言,你可以直接使用Arrays.sort,对于List和Vector而言,你可以使用Collections.sort方法。Java API针对集合类型的排序提供了2个方法:java.util.Collections.sort(java.util.List)java.util.Col原创 2012-08-06 22:35:20 · 16631 阅读 · 2 评论 -
I/O系统
在Java程序中,对于数据的输入/输出操作以"流" stream 的方式进行,java提供的所有流的类型都位于包java.io内,分别继承以下四种抽象流类型:字节流:InputStream, OutputStream,一个字节一个字节读字符流:Reader, Writer,一个字符(2个字节)一个字符读//先声明一下,在这里所谓的输入和输出都是针对程序而言的,比如说一个程序从一原创 2012-05-02 02:47:33 · 659 阅读 · 0 评论