精华内容
下载资源
问答
  • 1、创建File对象/** new File(String pathname)* 通过文件路径创建对象*/@Testpublic void testNewFile(){File file = new File("demo"+File.separator+"test.txt");System.out.println(file);}/** new File()* 通过...

    1、创建File对象

    /*

    * new File(String pathname)

    * 通过文件路径创建对象

    */

    @Test

    public void testNewFile(){

    File file = new File("demo"+File.separator+"test.txt");

    System.out.println(file);

    }

    /*

    * new File()

    * 通过父文件对象和子文件路径创建对象

    */

    @Test

    public void testNewFile2(){

    File parent = new File("demo");

    File file = new File(parent,"test.txt");

    System.out.println(file);

    }

    File类有许多构造方法,上面是其中两例,有感兴趣的朋友可以深入学习一下。

    注意:为了屏蔽平台(window,linux等)差异带来的影响,文件路径分隔符建议用File.separator。

    展开全文
  • 本文摘自《Java 核心技术 卷I》第四章 对象与类。 个人认为是个很必要的知识,故在博客上做个记录。 如果有条件,建议买上一本读一读,很有收获。 类设计技巧1.一定要保证数据私有2.一定要对数据进行初始化3.不要在...

    本文摘自《Java 核心技术 卷I》第四章 对象与类。
    个人认为是个很必要的知识,故在博客上做个记录。
    如果有条件,建议买上一本读一读,很有收获。

    1.一定要保证数据私有

    这是最重要的;绝对不要破坏封装性。有时候,可能需要编写一个访问器方法或更改器方法,但是最好还是保持实例字段的私有性。很多惨痛的教训告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常变化。当数据保持私有时,表示形式的变化不会对类的使用者产生影响而且也更容易检测bug。

    2.一定要对数据进行初始化

    Java不会为你初始化局部变量,但是会对对象的实例字段进行输出话。最好不要依赖于系统的默认值,而是应该显示地初始化所有的数据,可以提供默认值,也可以在所有构造器中设置默认值。

    3.不要在类中使用过多的基本类型

    这个想法是要用其他的类替换使用多个相关的基本类型。这样会使类更易于理解,也更易于修改。例如,用一个名为Address地新类替换一个Customer类中以下的实例字段:

    private String street;
    private String city;
    private String state;
    private int zip;
    

    这样一来,可以很容易地处理地址的变化,例如,可能需要处理国际地址。

    4.不是所有的字段都需要单独的字段访问器和字段更改器

    你可能需要获得或设置员工的工资。而一旦构造了员工对象,肯定不需要更改雇佣日期。另外,在对象中,常常包含一些不希望别人获得或设置的实例字段,例如,Address类中的州缩写数组。

    5.分解有过多指责的类

    这样说似乎有点含糊,究竟多少算是“过多”?每个人的看法都不同。但是,如果明显地可以将一个复杂的类分解成两个更为简单的类,就应该将其分解(但另一方面,也不要走极端。如果设计10个类,每个类只有一个方法,显然就有些矫枉过正了)。
    下面是一个反面的设计示例。

    public class CardDeck {
        private int[] value;
        private int[] suit;
        
        public CardDeck() {}
        public void shuffle() {}
        public int getTopValue() {}
        public int getTopSuit() {}
        public void draw() {}
    }
    
    

    实际上,这个类实现了两个独立的概念:一副牌(包含shuffle方法和draw方法)和一张牌(包含查看面值和花色的方法)。最好引入一个表示一张牌的Card类。现在又两个类,每个类完成自己的职责:

    public class CardDeck {
        private Card[] cards;
    
        public CardDeck() {}
        public void shuffle() {}
        public Card getTop() {}
        public void draw() {}
    }
    
    public class Card{
        private int value;
        private int suit;
    
        public Card(int value, int aSuit) {}
        public int getValue() {}
        public int getSuit() {}
    }
    

    6.类名和方法名要能够体现它们的职责

    与变量应该有一个能够反映其含义的名字一样,类也应该如此(在标准类库中,也存在着一些含义不明确的例子,如Date类实际上是一个用于描述时间的类)。
    对此有一个很好的惯例:类名应当是一个名词(Order),或者是前面有形容词修饰的名词(RushOrder),或者是有动名词(有”-ing“后缀)修饰的名词(例如,BillingAddress)。对于方法来说,要遵循标准惯例:访问器方法用小写get开头(getSalary),更改器方法用小写的set开头(setSalary)。

    7.优先使用不可变的类

    LocalDate类以及java.time包中的其他类是不可变的——没有方法能修改对象的状态。类似plusDays的方法并不是更改对象,而是返回状态已修改的新对象。
    更改对象的问题在于,如果多个线程试图同时更新一个对象,就会发生并发更改。其结果是不可预料的。如果类是不可变的,就可以安全地在多个线程间共享其对象。
    因此,要尽可能让类是不可变的,这是一个很好的想法。对于表示值的类,如一个字符串或一个时间点,这尤其容易。计算会生成新值,而不是更新原来的值。
    当然,并不是所有类都应当是不可变的。如果员工加薪时让raiseSalary方法返回一个新的Employee对象,这会很奇怪。

    展开全文
  • 1、一定要保证数据私有 2、一定要对数据初始化 3、不要在类中使用过多的基本类型 4、不是所有的域都需要独立的访问器和域更改器 5、将指责过多的类进行分解 6、类名和方法名要能够体现他们的职责 ...

    1、一定要保证数据私有
    2、一定要对数据初始化
    3、不要在类中使用过多的基本类型
    4、不是所有的域都需要独立的访问器和域更改器
    5、将指责过多的类进行分解
    6、类名和方法名要能够体现他们的职责
    7、优先使用不可变类

    展开全文
  • 1.将公共操作和域放在超类,把公有的东西放在上层可减少耦合。 2.不要使用被保护的域。 有些程序员认为,大多数实例域定义为protected是不错的主意,只有这样,子类才能在需要的时候访问他们。...

    1.将公共操作和域放在超类,把公有的东西放在上层可减少耦合。

    2.不要使用被保护的域。

    有些程序员认为,大多数实例域定义为protected是不错的主意,只有这样,子类才能在需要的时候访问他们。

    但是protected机制并不能够带来更好的保护,其原因主要有两点。第一,子类集合无限制,破坏封装性。第二

    ,包中的其他类也可以访问。

    3.使用继承实现 is-a 的关系。

    使用继承很容易节省代码,但不能滥用。例如,假设需要定义一个钟点工类。钟点工的信息包含姓名和雇佣日期,

    但是没有薪水。他们按小时计费,并且不会因为拖延时间而获得加薪。这似乎在诱导人们由Employee派生出子类Contravtor,然后再加一个工资域。其实这不是个好主意,在打印工资单时会出现麻烦,钟点工和雇员之间不是绝

    is-a(继承)关系。

    4.除非所有继承的方法都有意义,否则不要使用继承。

    5.在覆盖方法时,不要改变预期的行为。

    6.使用多态,而非类型信息。否则会引起更多的类型信息,增加冗余。

    7.不要过多的使用反射。反射机制能帮忙查看运行时的域和方法,让人们编写出更具通用性的程序。这种功能在编写

    系统程序时很实用,但不适合编写应用程序。因为反射很脆弱,如果出错难以检查。

     

    展开全文
  • 本文摘自《Java核心技术 卷 I》第5章继承 继承设计技巧1.将公共操作和字段放在超类中2.不要使用受保护的字段3.使用继承实现“is-a”关系4.除非所有继承的方法都有意义,否则不要使用继承5.再覆盖方法时,不要改变...
  • java核心技术第四章最后一节聊到了类设计的一些技巧,其实也算是一些原则,今天摘过来: 1》一定要保证数据私有化 绝对不要破坏类的封装性。需要编写一个访问器方法或者更改器方法时,最好还是保证实例域的私有性...
  • Java核心技术:异常、断言和日志——使用异常机制的技巧 书中虽明确列出了使用异常机制的技巧,但这些技巧并不是看了就能掌握的,要想使用好这些技巧还是要在编程中练习、感悟 异常处理不能代替简单的测试 示例编写...
  • JDK提供了一组主要的数据结构实现,如List、Map、Set等常用数据结构。这些数据都继承自 java.util.Collection 接口,并位于 java....Java核心数据结构(List,Map,Set)使用技巧与优化 可以看到,3种List均来自 A...
  • 11. 6 调试技巧1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试。这个方法可以保留,因为在java虚拟机只调用启动类的main方法。2) 日志代理,( logging proxy) ,...
  • 反射反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序。这项功能被大量地应用于JavaBeans中,它是Java组件的体系结构。(有关JavaBeans的详细内容在卷II中阐述...
  • 【原文】https://www.toutiao.com/i6594587397101453827/ Java核心数据结构(List,Map,Set)使用技巧与优化 JDK提供了一组主要的数据结构实现,如List、Map、Set等常用数据结构。这些数据都继承自 java.util....
  • 应用这些技巧可以使得设计出来的类更具有OOP的专业水准。 [color=red]1.一定要将数据设计为私有[/color] 最重要的是:不要破坏封装性。 [color=red]2.一定要对数据初始化[/color] Java不对局部变量进行...
  • java编程技巧

    2018-06-14 17:13:00
    Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类...
  • 反射反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序。这项功能被大量地应用于JavaBeans中,它是Java组件的体系结构。(有关JavaBeans的详细内容在卷II中阐述...
  • 【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。...这些数据都继承自 java.util.Collection 接口,并位于 java.util 包内。 1、List接口 最重要的三种List接口...
  • 章节内容面向对象程序设计使用预定义类用户自定义类静态域和静态方法方法参数对象构造包类路径文档注释类设计技巧面向对象程序设计面向对象程序设计(OOP)已经取代了结构化程序设计。java是完全面向对象的。OOP中我们...
  • 这些数据都继承自java.util.Collection接口,并位于java.util包内。 一、List接口 最重要的三种List接口实现:ArrayList、Vector、LinkedList。它们的类图如下: 可以看到,3种List均来自AbstratList的实现。...
  • 不可变的类指没有方法能够修改对象的状态,例如LocalDate类和java.time包中的其他类是不可变的。 可变对象的问题在于,如果多个线程试图同时更新一个对象,就会发生并发更改,其结果是不可预料的。如果类是不可变的...
  • 这些数据都继承自 java.util.Collection 接口,并位于 java.util 包内。 1、List接口 最重要的三种List接口实现:ArrayList、Vector、LinkedList。它们的类图如下: 可以看到,3种List均来自 AbstratList...
  • 同时掌握 IO 最底层最核心的操作技巧。BIO、NIO、AIO 的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO 如何实现多路复用功能?带着以上这几个问题,让我们一起进入IO的世界吧。...
  • 应用以下技巧使得十级出来的类更具有OOP的专业水准 1.一定将数据设计为私有 最总要的是:绝对不要破坏封装性.有时候,需要编写一个访问器方法或更改器方法,但  是最好还是保持实例域的私有性.很多惨痛的经验告诉我们,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,095
精华内容 438
关键字:

java核心技巧

java 订阅