java学习
文章平均质量分 67
打不赢jiu跑
w jiu shi w
展开
-
java学习笔记1——面向对象的一些性质
statics 是一个特殊关键字,可用于修饰方法、Field等成员。Filed这个东西又可以翻译成成员变量。static修饰的成员表面它属于这个类本身,儿不属于该类的丹哥实例,因为通常把static修饰的Filed和方法也称为类Filed、类方法。不用static修饰的普通方法、Field则属于该类的单个实例,而不属于该类。通常把不适用static修饰的成员变量和方法也称为实例成员变量、实例方法。原创 2013-11-27 21:30:13 · 536 阅读 · 0 评论 -
java学习笔记8——java匿名内部类
匿名内部类适合创建只需要一次使用的类,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。 new 父类构造器(实参列表)|实现接口() { //匿名内部类的类体部分 } 匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。有两条原创 2014-01-17 10:36:56 · 598 阅读 · 0 评论 -
java学习笔记24——String类不可变性
如果我们需要修改一个String对象,最好使用StringBuffer或StringBuilder。否则,会在每次创建一个新的String对象时消耗垃圾回收器大量时间。例How to read file content into a string?The following is the Java code to do that. To make it work, the转载 2014-01-25 23:32:59 · 481 阅读 · 0 评论 -
Java语言与C++语言的差异总结
Java的设计者曾说过,设计这门语言的灵感主要来自于C++。世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史。所以在Java语言学习过程中,将其与C++语言对比是一件有意义的事情。通过这些对比,我们能够了解到Java语言相对于C++语言有哪些改进,能带给我们哪些进步,这样对于更加深入理解这两种语言是大有裨益的。 下面我总结一下Java语言转载 2014-01-20 20:34:08 · 346 阅读 · 0 评论 -
java学习笔记9——调用父类构造器
在一个构造器中调用另一个重载的构造器使用this调用来完成,在子类构造器中调用父类构造器使用super调用来完成。class Base{public double size;public String name;public Base(double size , String name){this.name = name;this.size = si原创 2014-01-20 15:21:18 · 658 阅读 · 0 评论 -
java学习笔记12——构造器
Java中子类可以继承父类的属性和方法,那么子类对象就可以直接使用父类对象的属性和方法,实现机制就是,当某个子类对象实例化的时候,会首先实 例化一个其父类对象,但这个父类对象对外不可见,只能通过子类中的super来访问;以此类推,父类对象初始化前又会先初始化它的父类对象......直 至初始化Object对象为止。这样的效果就是,新建一个类的实例实际上得到的是一个对象的“链条”,通过关键字supe原创 2014-01-20 20:36:09 · 408 阅读 · 0 评论 -
java学习笔记10——多态
java引用变量有两个类型,一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际复制给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。例class BaseClass{ public int book = 6 ;public void base(){System.out.println(原创 2014-01-20 15:22:20 · 416 阅读 · 0 评论 -
java学习笔记11——编译时类型和运行时类型
编译时类型和运行时类型: Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,会出现所谓的多态。因为子类其实是一种特殊的父类,因此java允许把一个子类对象直接赋值给一个父类引用变量,无须任何类型转换,或者被称为向上转型,由系统自动完成。转载 2014-01-20 15:24:27 · 464 阅读 · 0 评论 -
java学习笔记14—— final修饰符
执行初始化块时,可以对类成员变量赋初始值;当执行普通初始化块、构造器时可对实例成员变量赋初始值。对final修饰的类成员变量、实例成员变量指定初始值时: 类成员变量:必须在静态初始化块中或声明该成员变量时指定初始值。 实例成员变量:必须在非晶态初始化块、声明该成员变量或构造器中指定初始值。 对一个final变量来说,不管是类成员变量、实例成员变原创 2014-01-21 14:24:07 · 403 阅读 · 0 评论 -
Java方法参数太多怎么办—Part3—Builder模式
在前两篇文章中,我分别使用了自定义类型和参数对象方法来减少构造器或方法调用传入的参数数量。本文关注的是Builder模式。我认为它不仅能够帮助构造函数“瘦身”,甚至可以对非构造函数也能发挥同样的作用。在Effective Java第二版中,Josh Bloch在第二章中就提到使用Builder模式处理需要很多参数的构造函数。他不仅展示了Builder的使用,也描述了相这种方法相对使转载 2014-02-07 22:36:09 · 648 阅读 · 0 评论 -
Java方法参数太多怎么办—Part4—重载
在Java编程中,如果一个方法带太多的参数被会给调用者带来很多困扰。调用者必须考虑是否按照正确的参数顺序给传入合适的值。在前面的文章中,先后探讨了通过自定义类型、参数对象、Builder模式来解决这个问题。还有一种方法,也是今天探讨的主题——通过方法重载来应对各种不同需求。与往常一样,在文章最后我会对重载的优缺点进行总结。Java支持方法重载,可以通过方法签名来区分同名方法之间是否重载。请转载 2014-02-07 22:37:28 · 694 阅读 · 0 评论 -
Java方法参数太多怎么办—Part 1—自定义类型
我认为构造函数和方法过长的传递参数列表是一种红色警告(”red flag“)。在开发过程中,从逻辑的和功能的角度来看并非错误,但是通常意味着现在或者将来犯错误的可能性更高。通过阅读一系列文章,我发现一些解决参数列表过长的办法,或者至少这些办法可以减少参数个数、增强代码的可读性并降低发生错误的概率。任何解决问题的办法都具有优点和缺点。本文旨在通过使用自定义类型改进长参数方法和构造函数代码的可读性转载 2014-02-07 22:01:25 · 599 阅读 · 0 评论 -
Java方法参数太多怎么办—Part 2—引入参数对象
在前一篇文章中,我关注了一些关于构造函数或方法参数过多的问题。文中我讨论了用自定义类型代替基本、内置类型以获得良好的可读性和安全性。然而这并不能减少参数的数量。这次,我将用参数对象方法给构造函数和方法的参数“瘦身”。通常你会看到一组特定参数,它们关系紧密并且总是一起传给方法或构造函数,有可能好几个函数都使用这一组参数。这些函数可能属于同一个类,也可能属于不同的类。这时,《重构》这本转载 2014-02-07 22:34:54 · 753 阅读 · 0 评论 -
Java方法参数太多怎么办—Part5—方法命名
在前面文章(“Java方法参数太多怎么办”系列之四)中,讨论了如何使用方法重载减少方法和构造函数的参数,指出了这种方式的一些不足并建议使用多个不同的函数名代替重载。本文将深入讨论如何通过函数命名解决参数过多的问题,并且可以弥补方法重载的一些不足。从减少参数的角度来看,方法重载的核心问题在于:当参数过多时,相同名字的方法到底可以重载多少次?当其中一些参数的类型相同时尤其如此。举个例子,我定义转载 2014-02-07 22:38:45 · 770 阅读 · 0 评论 -
Java方法参数太多怎么办—Part6—方法返回值
在前面文章中,讨论了如何直接减少构造函数和方法的参数,比如通过自定义类型、引入参数对象、Builder模式、重载和方法命名来减少参数。你可能会奇怪为什么会讨论方法返回值。然而,实际开发中开发者会使用参数作为返回值,从而增加了额外的参数。非构造函数一般会在方法签名中指定返回值,声明返回值类型。然而,一个令人困扰的问题是:这种方法只支持一个返回值…Java异常处理机制提供了另一种结果返转载 2014-02-07 22:39:29 · 728 阅读 · 0 评论 -
java学习笔记6——java静态内部类
用static修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象。因此也被称为类内部类,或者静态内部类。static是把类的成员变量变成类相关,而不是实例相关。外部类的上一级程序单元是包,所以不可以用static修饰;而内部类的上一级程序单元是外部类,使用static修饰可以将内部类变成外部类相关,而不是外部类实例相关。因此,static不可修饰外部类,但可修饰内部类。原创 2014-01-17 10:35:45 · 451 阅读 · 0 评论 -
java学习笔记5——java闭包(Closure)和回调
闭包是一种能被调用的对象,它保存了创建它的作用域信息。java7没有显示支持闭包,但对非静态内部类,不仅记录了其外部类的详细信息,还保留了一个创建非静态内部类对象的引用,并且可以直接调用外部类的private成员,所以可以把非静态内部类当成面向对象的闭包。 通过这种仿闭包的非静态内部类,可以很方便的实现回调功能,回调就是某个方法一旦获取了内部类对象的引用后,就可以在合适的时候反过原创 2014-01-17 10:22:09 · 576 阅读 · 0 评论 -
java学习笔记7——java局部内部类
把内部类定义在方法里,就是局部内部类。局部内部类仅在该方法内有效。对局部成员而言,不管是局部变量还是局部内部类,它们的上一级程序单元都是方法,而不是类,使用static修饰它们没有任何意义。所以,所有局部成员都不能使用static修饰。不仅如此,局部成员的作用域都是所在方法,其他程序单元永远也不可能访问另一个方法中的局部成员,所以所有的局部成员都不能使用访问控制符修饰。public class原创 2014-01-17 10:36:19 · 362 阅读 · 0 评论 -
java学习笔记2——方法
方法是类或对象的行为特征的抽象,java中方法不能独立存在,所有方法必须定义在类里。方法不等于传统的函数,在结构化编程语言里,函数是一等公民,整个软件由一个个函数组成;在面向对象编程语言中,类才是一等公民,整个软件由一个个类组成,因此在java中,方法不能独立存在,方法必须属于类或对象。 只能在类中定义方法,如果这个方法使用了static,则这个方法属于这个类,否则这原创 2013-12-02 15:36:40 · 470 阅读 · 0 评论 -
java学习笔记3——重载
构造器的重载,同一个类中具有多个构造器,多个构造器的形参列表不同,被称为构造器重载。可以在一个构造器里直接调用另一个构造器。例:public class Apple{public String name;public String color;public double weight;public Apple(){}public Apple(String nam原创 2013-12-11 18:39:47 · 438 阅读 · 0 评论 -
java学习笔记4——不可变类
class Name{ private String firstName; private String lastName; public Name(){} public Name(String firstName , String lastName){ this.firstName = firstName; this.lastName = lastNa原创 2013-12-16 23:08:30 · 410 阅读 · 0 评论 -
java学习笔记13——类成员
static修饰的成员就是类成员,包括类成员变量、类方法、静态初始化块。static不能修饰构造器,static修饰的类成员属于整个类,不属于单个实例。类成员变量属于整个类,当系统第一次准备使用该类时,系统会为该类成员变量分配内存空间,类成员变量开始生效,知道该类被卸载,该类的类成员变量所占有内存才会被系统的垃圾回收机制回收。类成员变量生存范围几乎等于该类的生存范围。当雷初始化完成后,类成员变量也原创 2014-01-21 11:42:07 · 351 阅读 · 0 评论 -
java学习笔记13——单例类
大部分情况下,类的构造器都定义成public访问权限,允许任何类自由创建该类的对象。但某些时候,创建太多类没有意义,那么不允许自由创建该类的对象,而只允许该类创建一个对象。一个类始终只能创建一个实例,则这个类被称为单例类。 我们把该类的构造器使用private修饰,从而把该类的所有构造器隐藏起来。一旦把该类的构造器隐藏起来,就要提供一个public方法作为该类的访问点,用于创建该原创 2014-01-21 11:43:15 · 445 阅读 · 0 评论 -
java学习笔记15——不可变类
class Name { private String firstName; private String lastName; public Name(){} public Name(String firstName , String lastName) { this.firstName = firstName; this.lastName = last原创 2014-01-22 15:20:59 · 364 阅读 · 0 评论 -
java学习笔记16——抽象类
抽象方法只有方法签名,没有方法实现的方法。有抽象方法的类只能被定义为抽象类。有如下特性: 1、抽象类不能被实例化,无法使用new来调用抽象类的构造器创建抽象类的实例。 2、抽象类构造器不能用于创建实例,主要是用于被其子类调用。 归纳,用”有得有失“四个字描述抽象类。”得“指的是抽象类多了一个能力:抽象类可以包含抽象方法;”失“指的是抽象类失去一原创 2014-01-22 15:22:08 · 406 阅读 · 0 评论 -
java学习笔记19——静态内部类
用static修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象。因此也被称为类内部类,或者静态内部类。static是把类的成员变量变成类相关,而不是实例相关。外部类的上一级程序单元是包,所以不可以用static修饰;而内部类的上一级程序单元是外部类,使用static修饰可以将内部类变成外部类相关,而不是外部类实例相关。因此,static不可修饰外部类,但可修饰内部类。原创 2014-01-23 09:55:19 · 378 阅读 · 0 评论 -
java学习笔记17——接口
接口比抽象类更抽象。不用class关键字而是用interface,定义的是多个类共同的公共行为规范。抽象类里不光有抽象方法还有普通方法,而接口里所有方法都是抽象方法,不能包含普通方法。 [修饰符] interface 接口名 extends 父接口1,父接口2…… { 零到多个常量定义…… 零到多个抽象方法定义……原创 2014-01-22 15:24:38 · 436 阅读 · 0 评论 -
java学习笔记18——内部类
外部类的上一级程序单元是包,所以它只有2个作用域:同一个包内和任何位置。因此只需要2种访问权限:包访问权限和公开访问权限,正好对应省略访问控制符和public访问控制符。省略访问控制符是包访问权限,即同一包中的其他类可以访问省略访问控制符的成员。如果一个外部类不适用任何控制符修饰,则只能被同一个包中其他类访问。而内部类的上一级程序单元是外部类,它有4个作用域:同一个类、同一个包、父子类和任何位置。原创 2014-01-23 09:52:18 · 516 阅读 · 0 评论 -
java学习笔记21——匿名内部类
匿名内部类适合创建只需要一次使用的类,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。 new 父类构造器(实参列表)|实现接口() { //匿名内部类的类体部分 } 匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。有两条原创 2014-01-23 18:54:55 · 452 阅读 · 0 评论 -
java学习笔记23——枚举类
实例有限而且固定的类,叫枚举类。 手动实现枚举类,要注意以下几点: 1、要用private把构造器隐藏起来。 2、把这个类所有可能实例都使用public static final修饰的类变量来保存。 3、可以提供一些静态方法,允许其他程序根据特定参数来获取与之匹配的实例。 enum关键字定义枚举类,在注意其与原创 2014-01-24 11:32:35 · 457 阅读 · 0 评论 -
java学习笔记20——局部内部类
把内部类定义在方法里,就是局部内部类。局部内部类仅在该方法内有效。对局部成员而言,不管是局部变量还是局部内部类,它们的上一级程序单元都是方法,而不是类,使用static修饰它们没有任何意义。所以,所有局部成员都不能使用static修饰。不仅如此,局部成员的作用域都是所在方法,其他程序单元永远也不可能访问另一个方法中的局部成员,所以所有的局部成员都不能使用访问控制符修饰。public class原创 2014-01-23 18:41:55 · 397 阅读 · 0 评论 -
java学习笔记22——闭包(Closure)和回调
闭包是一种能被调用的对象,它保存了创建它的作用域信息。java7没有显示支持闭包,但对非静态内部类,不仅记录了其外部类的详细信息,还保留了一个创建非静态内部类对象的引用,并且可以直接调用外部类的private成员,所以可以把非静态内部类当成面向对象的闭包。 通过这种仿闭包的非静态内部类,可以很方便的实现回调功能,回调就是某个方法一旦获取了内部类对象的引用后,就可以在合适的时候反过原创 2014-01-24 09:26:18 · 400 阅读 · 0 评论 -
java学习笔记25——HashMap
前几天电话面试了阿里,问到了Hash原创 2014-08-11 11:04:25 · 519 阅读 · 0 评论