欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JAVA,

来源: javaer 分享于  点击 14210 次 点评:187

JAVA,


引子:从毕业开始就从事手机开发,主要偏向底层,所以一直在做C,C++。这两年随着android的流行,JAVA又重新在手机行业兴起,我也兴致勃勃的去接触它,了解它。

有的人可能搞JAVA的人都是做界面的,上层的,JAVA没有C++高深。我自身并不对这种看法做任何评论,JAVA只是一种语言,一种标准,只是坚信任何一件事情做好,掌握好任何一门技艺都不是一件简单的事情,JAVA的流行是有它的道理,任何事物存在都存在道理。可能JAVA确实通过很多大师们的聪明才智让我们这些低级码农能更专心我们自己的业务和逻辑,而不是去玩语言的技巧,让写程序也能变成流水线模版是操作。 我最近确实思绪万千,想做很多东西,但是也觉得自己的知识不够精纯,准备重新看看以前看过的书,这里就当看  Think in Java 的笔记吧。

(1) 对于一些基础的JAVA的数据类型,这些类型的创建是放到栈里面的,不需要我们new出堆中的内存,不像C++,C, 这种基础数据类型都有CPU处理决定,JAVA中是指定的,每种数据类型占用多少字节都是固定的,它增加了JAVA的跨平台性。

boolean 1 位 - - Boolean
char 16 位 Unicode 0 Unicode 2 的16 次方-1 Character
byte 8 位 -128 +127 Byte(注释①)
short 16 位 -2 的15 次方 +2 的15 次方-1 Short(注释①)
int 32 位 -2 的31 次方 +2 的31 次方-1 Integer
long 64 位 -2 的63 次方 +2 的63 次方-1 Long
float 32 位 IEEE754 IEEE754 Float
double 64 位 IEEE754 IEEE754 Double

 

主类型 默认值
Boolean false
Char '\u0000'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

一旦将变量作为类成员使用,就要特别注意由Java 分配的默认值。这样做可保证主类型的成员变量肯定得到了初始化(C++不具备这一功能),可有效遏止多种相关的编程错误。然而,这种保证却并不适用于“局部”变量——那些变量并非一个类的字段。所以,假若在一个函数定义中写入下述代码:
int x;
那么x 会得到一些随机值(这与C 和C++是一样的),不会自动初始化成零。我们责任是在正式使用x 前分配一个适当的值。如果忘记,就会得到一条编译期错误,告诉我们变量可能尚未初始化。这种处理正是Java优于C++的表现之一。许多C++编译器会对变量未初始化发出警告,但在Java 里却是错误。

(2)关于JAVA的内存管理,很多人都认为JAVA 简化了程序员对于内存的管理,我们只管new不用管释放,垃圾回收器会帮助做它,这大大简化了程序员编写程序的复杂性。确实它给我们带来了方便,但是如果你想深入一种语言,真正的掌握它,我们需要了解JAVA的内存回收机制,JAVA虚拟器等,当遇到内存问题的时候我们能真正深入进去,找到问题的原因,是因为GC的问题,还是我们进城自己造成的隐形内存泄露。 JAVA带来了操作上的方便,但是可能它需要程序知道的更多关于内存的操控,C++中我们只要掌握你自己new的你就得自己释放,如果指针弄丢了这就造成了内存泄露,一种简单的逻辑。 可以上网找找JAVA的内存回收机制,我们可以采用JAVA提供我们几类的接口去更加细致的去操作内存。

     补充一句,JAVA采用了很多C++的设计理念,一个类new出来,到底占用多少内存,这个类在内存中的布局是什么样的,对象的引用是否对应C++的指针那。我们需要对于JAVA的一个类的内存布局详细了解。       

画了一个简易的类在内存中的布局图:

 

(3) 写一个特别简单的小程序,以后我这里所有写的代码都会在windows里面通过命令行测试,或者我提出什么疑问也会通过程序测试:

            public class test {
                public static void main(String[] args) {
                    System.out.println("Welcome to Java world!");
                }
            }

(4)在大公司,对代码的规范非常严格,我们写出的代码要严格遵守JAVA的规范,多一个空格都是不行的,这个表面上看是一种苛刻,但是我觉得其实对我们自身也是一种锻炼,我们能从中学会严谨,在工作中我们要注重每一个小的细节,这样才能把一个大的事情做好。做出来和做好确实是一个非常大的概念,我现在供职于一家比较大型的外企,虽然这两年我没有学到多少新的知识,技艺的增长也没有我当初在小公司大,但是我觉得我在这两年收获做大的还是一种严谨的态度。它不仅影响着我的工作,而且我的生活也受影响,我能更好的处理好生活中很多事情。 呵呵,言归正传,介绍3种JAVA中代码注释的方法,代码的注释非常重要,它可以很好的解释一段代码的作用,一个函数的参数和说明,为后续维护人员带来很多便利。

1:沿用C的注释风格

/* 这是
* 一段注释,
* 它跨越了多个行
*/

 

/** 一个类注释 */
public class docTest {
/** 一个变量注释 */
public int i;
/** 一个方法注释 */
public void f() {}
}

 

2:沿用C++的注释风格

// 这是一条单行注释

 

书上摘录的一些注释采用的风格:

1. @param
格式如下:
@param 参数名 说明
其中,“参数名”是指参数列表内的标识符,而“说明”代表一些可延续到后续行内的说明文字。一旦遇到
一个新文档标记,就认为前一个说明结束。可使用任意数量的说明,每个参数一个。
2. @return
格式如下:
@return 说明
其中,“说明”是指返回值的含义。它可延续到后面的行内。
3. @exception
有关“违例”(Exception)的详细情况,我们会在第9 章讲述。简言之,它们是一些特殊的对象,若某个方
法失败,就可将它们“扔出”对象。调用一个方法时,尽管只有一个违例对象出现,但一些特殊的方法也许
能产生任意数量的、不同类型的违例。所有这些违例都需要说明。所以,违例标记的格式如下:
@exception 完整类名 说明
其中,“完整类名”明确指定了一个违例类的名字,它是在其他某个地方定义好的。而“说明”(同样可以
延续到下面的行)告诉我们为什么这种特殊类型的违例会在方法调用中出现。
4. @deprecated
这是Java 1.1 的新特性。该标记用于指出一些旧功能已由改进过的新功能取代。该标记的作用是建议用户不
必再使用一种特定的功能,因为未来改版时可能摒弃这一功能。若将一个方法标记为@deprecated,则使用该
方法时会收到编译器的警告。

 

下面摘录一个小程序,它加入了完整的文档注释:
//: Property.java
import java.util.*;
/** The first Thinking in Java example program.
* Lists system information on current machine.
* @author Bruce Eckel
* @author http://www.BruceEckel.com
* @version 1.0
*/
public class Property {
    /** Sole entry point to class & application
     * @param args array of string arguments
     * @return No return value
     * @exception exceptions No exceptions thrown
    */
    public static void main(String[] args) {
        System.out.println(new Date());
        Properties p = System.getProperties();
        p.list(System.out);
        System.out.println("--- Memory Usage:");
        Runtime rt = Runtime.getRuntime();
        System.out.println("Total Memory = " + rt.totalMemory() + " Free Memory = " + rt.freeMemory());
    }
}

代码的规范不光说的是表面,而且谨慎的态度也应该应用到代码的内部,我们写任何一段代码,哪怕它只有20行我们也要仔细的分析其中的漏洞,优化它,使他更加的清晰高效。

相关文章

    暂无相关文章
相关栏目:

用户点评