`
liugang594
  • 浏览: 981634 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java学习一

阅读更多
1.注释大量代码最简单的方法就是:把代码放在一个永远不会执行的if语句块里,例如:if(false){//大量语句}
 

import FAQ

  1. Q: Does importing all classes in a package make my object file (.class or .jar) larger?

    A: No, import only tells the compiler where to look for symbols.

  2. Q: Is it less efficient to import all classes than only the classes I need?

    A: No. The search for names is very efficient so there is no effective difference.

  3. Q: Doesn't it provide better documentation to import each class explicitly?

    A: This shows good intentions, but ...

    • It's hard to remember to remove classes when they are no longer used, so the import list is surprisingly often wrong. It can seriously slow down reading because unusual or unexpected class imports make me look for that class, only to discover that it must have been used in an earlier version.
    • Explicit class imports permit accidentally defining classes with names that conflict with the standard library names. This is very bad. Using "*" to import all classes prevents this dangerous naming accident.
    • It's annoying to always update this list, altho if you use NetBeans, fixing the list is only a click away (see below).
  4. Q: I've imported java.awt.*, why do I also need java.awt.event.*?

    A: The wildcard "*" only makes the classes in this package visible, not any of the subpackages.

  5. Q: Why don't I need an import to use String, System, etc?

    A: All classes in the java.lang package are visible without an import.

  6. Q: Is the order of the imports important?

    A: No. Group them for readability.

Static imports in Java 5

Java 5 added an import static option that allows static variables (typically constants) to be referenced without qualifying them with a class name. For example, after

import static java.awt.Color;

It would then be possible to write

   Color background = RED;

instead of

   Color background = Color.RED;

Adding this "feature" wasn't the best idea because it leads to name pollution and confusion about which class constants come from. Even Sun (see References below) basically advises not to use it!

注:使用诸如java.util.*这样的导入并不会把java.util包下的所有类导入,而只有在类中使用到的类会被导入!
 
3.关于标识符(Identifier)
  • 使用Character.isJavaIdentifierStart(char ch)可以判断一个字符是不是适合做为java标识符的首字符
  • 使用Character.isJavaIdentifierPart(char ch)可以判断一个字符是不是适合做标识符的非首字符

4.良好的命名很重要(转自java rulers),例如

class Reuse {
 Reuse Reuse(Reuse Reuse) {
  Reuse: for (;;) {
   if (Reuse.Reuse(Reuse) == Reuse)
    break Reuse;
  }
  return Reuse;
 }
}

你能清晰而准确的看懂这个程序吗?

注:规则的例外:假如已经有了长时间的使用习惯和相互约定,就不用盲从java命名规则

 5.关于行分隔符的问题(java rulers)

应该程序应该尽是使用line.separator的系统属性来实现平台无关行分隔,或者例如在写文件的时候使用Writer的newLine()或是PrintWriter的println()方法。

注:line.separator不适用于HTTP的网络程序,因为HTTP中因定CRLF(\r\n)为行分隔符

 6.一个好玩的程序(受java rulers的启示)

看java rulers说在java中支持Unicode码做为变量名和类型声明等。就突发其想,写了以下程序:

\u0070\u0061\u0063\u006b\u0061\u0067\u0065\u0020\u0063\u006f\u006d\u002e\u0074\u0069\u0062\u0063\u006f\u002e\u0063\u0064\u0063\u002e\u006c\u0069\u0075\u0067\u0061\u006e\u0067\u002e\u006a\u0061\u0076\u0061\u002e\u0072\u0075\u006c\u0065\u0072\u0073\u003b
\u0063\u006c\u0061\u0073\u0073\u0020\u0054\u0065\u0073\u0074\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0061\u0072\u0067\u0073\u0029\u0020\u007b\u000a\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u004c\u0069\u0075\u0067\u0061\u006e\u0067\u0022\u0029\u003b\u000a\u007d\u007d

你能看懂这个程序吗?如果你想看运行结果,可以把这个内容复制,然后在Eclipse某个工程的src目录上粘贴,就可以看有到有一个包:com.tibco.cdc.liugang.java.rulers和该包下的一个Test类会生成。最后运行结果是输出一个:Liugang

可以写好一串java代码的字符串,然后使用以下两个方法进行转换:

 public static String toUnicode(String str){
  String result = "";
  for(int i = 0;i<str.length();i++){
   char iChar = str.charAt(i);
   result += toUnicode(iChar);
  }
  return result;
 }
 public static String toUnicode(char ch){
  String hexString = Integer.toHexString(ch);
  for(int i =hexString.length();i<4;i++){
   hexString = "0"+hexString;
  }
  return "\\u"+hexString;
 }

例如:

  System.out.println(toUnicode("package com.tibco.cdc.liugang.java.rulers;"));
  System.out.println(toUnicode("class Test{public static void main(String[] args) {\nSystem.out.println(\"Liugang\");\n}}"));

 

注:居然又发现了Eclipse的一个强大之处,以前只知道一串java内容直接在文件夹上粘贴,可以生成对应的Java类,这次居然发现,这个内容还可以是Unicode码!

分享到:
评论

相关推荐

    JAVA学习全套PPT

    【JAVA编程学习】是计算机科学领域的一个重要主题,尤其对于初学者来说,它是一个非常有价值的起点。Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性而闻名,这得益于Java虚拟机(JVM)...

    java学习路线(鱼皮)

    Java学习路线(鱼皮)是一条完整、实用、开源的学习路线,旨在帮助学习者快速掌握Java开发的所有知识点,并提供了丰富的资源推荐和学习建议,以便学习者更好地学习和掌握Java开发技术。 知识点: * Java编程基础 *...

    怎么学习Java怎么学习Java

    学习Java是一种深度探究编程思维的过程,它涉及到对面向对象编程的理解和掌握。首先,要认识到Java作为一门面向对象的语言,其核心在于接口(Interface)和多线程等特性。理解接口的意义是理解Java多继承的一种优化...

    最全JAVA学习路线一条龙思维导图(附资源链接)PS:程序员鱼皮

    最全JAVA学习路线一条龙思维导图(附资源链接)PS:程序员鱼皮 1. 最新,完整一条龙的大厂 Java 学习路线,从入门到入土 2. 同时适用于想全面学习 / 快速求职的同学,可以根据符号来定制自己的专属学习路线 3. 给出...

    java学习心得体会

    Java学习心得 在编程的世界里,Java是一种广泛应用的高级编程语言,以其跨平台、面向对象的...而"java学习心得.txt"这个文件名,很可能包含了一位开发者在学习过程中的笔记和经验总结,是值得参考和借鉴的宝贵资料。

    Java学习网站大全

    - **Reddit的r/learnjava**:一个Java学习者交流的社区,分享经验、提问答疑。 - **Java-forums.org**:专门讨论Java技术的论坛,可找到大量技术讨论帖。 - **DZone**:发布Java相关的文章和技术资讯,帮助开发者...

    java学习路线脑图

    在这个过程中,"java学习路线脑图"可能是一个非常有用的工具,它可以帮助你可视化学习路径,清晰地看到各个知识点之间的联系,从而更有效地组织学习计划。不断实践和项目经验积累,将使你成为一位精通Java的开发人员...

    Java学习指南第四版下册

    《Java学习指南(第4版)(上、下册)》是畅销Java学习指南的ZUI新版,详细介绍了Java 6和Java 7的语言特性和API。本书全面介绍了Java的基础知识,力图通过完备地介绍Java语言、其类库、编程技术以及术语,从而成为一本...

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    java学习书籍

    "java学习书籍"这个主题意味着我们将深入探讨Java的学习资源,尤其是通过书籍这一传统但有效的途径。在这个数字化时代,书籍仍然是获取系统性知识的重要渠道。"it就是不断充实自己"这句描述强调了在信息技术领域持续...

    JAVA 学习之路

    1)你对学习Java是否有兴趣? 2)你是否能静下心来坚持不懈地学习? 嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣、而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往...

    java学习方法用实用

    总的来说,Java学习是一个逐步深入的过程,需要耐心和实践。遵循上述步骤,并结合个人的学习节奏和兴趣,你将能够有效掌握这门强大的编程语言。在学习过程中,不断反思、总结,保持对新技术的热情,你将成为一名出色...

    Java学习指南上册

    《Java学习指南上册》是一本专为Java初学者和进阶者设计的教程书籍,旨在帮助读者深入理解和掌握Java编程语言。这份压缩包包含了该书的上下两部分,分别为"Java学习指南第四版上册part1.pdf"和"Java学习指南第四版...

    JAVA学习源代码

    总的来说,这份"JAVA学习源代码"资源是一个完整的Java学习套餐,不仅提供了理论知识,还提供了丰富的实践素材。对于想要深入学习Java的人来说,这是一个很好的起点,通过阅读、理解并实践这些源代码,可以逐步提升...

    (完整版)最全的java学习笔记(必看).pdf

    Java学习笔记 Java是一种流行的编程语言,广泛应用于Android应用程序开发、Web应用程序开发、桌面应用程序开发等领域。以下是Java学习笔记的摘要信息: 一、Java技术基础 * 1.1 编程语言:Java是一种面向对象的...

    java学习路线图以及学习java要学习的东西

    首先,理解基础语法是Java学习的第一步。这包括变量、数据类型、运算符、流程控制(如if语句、for循环和while循环)、数组等基本概念。深入理解这些基础将有助于构建扎实的编程思维。 其次,进入面向对象编程的概念...

    java学习资料 java学习资料 java学习资料 java学习资料 java学习资料 java学习资料 java学习资料

    以上知识点只是Java学习的一部分,深入理解并实践这些内容,将有助于成为一个合格的Java开发者。这个压缩包中的“java资料”很可能会涵盖这些领域的教程、示例代码、练习题和参考手册,为你的Java学习之旅提供全方位...

    java 学习资料大全

    总之,“Java学习资料大全”应该包含了以上各个领域的教程、示例代码、实践项目和相关书籍,为初学者到高级开发者提供了全面的学习资源。通过深入学习并不断实践,可以成为一名熟练的Java开发者。

    Java学习(apk)

    Java学习是Android客户端目前最全面的免费离线Java学习书籍,主要内容包括: 1、Java的数据类型,控制语句,数组,封装、继承、多态,接口等基础知识 2、Java算法练习及时巩固学习成果 3、Java文件操作、多线程、...

Global site tag (gtag.js) - Google Analytics