易截截图软件、单文件、免安装、纯绿色、仅160KB

Java初学笔记(一)变量及其内存机制

小菜鸟我最近开始决定认真学一学Java基础知识。
大学的时候开了这门课程,不过是选修课。而且当时对C/C++的执着导致我天真的完全对Java“鄙视”与忽略。现在看起来是多么天真,曾经和很多浮躁、无知的人一起鄙视用Java的程序员,然后才知道自己是多么无知,以至于忽略了近代几乎最伟大最有争议的、却集中了人类在计算机编程语言方面无与伦比的智慧结晶——Java语言。
而JAVA的创始公司 sun公司,无疑是公认的一流技术三流营销。对于该问题的讨论已经太多,在此不多复述。
Java 对于变量最大的特点就是 安全使用、垃圾收集。
对于写惯了C/C++的程序员来说,首先是极其不习惯的一堆new(找不到delete与其对应……),然后是用起来惴惴不安(因为不需要考虑释放内存。。)
其实从根本上来理解Java,会发现这个设计真的很巧妙。(呵呵,不过我也承认,该技术造成了编程难度下降导致C/C++程序员就业空间大幅度缩水)
与传统的C/C++虽然语法很像,但是变量在理解上还是有许多区别的。
如直接 new出来的对象实例,比如 ClassX obj = new ClassX() ,其数据是分配在堆上。而obj只作为其一个交互的句柄,不代表任何的内存实例。假设在C++中 ClassX obj2=obj,则会调用类的默认拷贝构造函数,造成一次具体内容的拷贝。但在Java中只是令另一个句柄obj2指向了句柄obj指向的内容。
而释放该堆内存的机制则是 垃圾回收器 自动检测,当该堆内容“不再被任何调用”后释放。我觉得是编译器(或者预编译器)在处理过程中就有类似“向后追溯”调用记录的统计来实现这个功能 —— 真是简单而又天才的想法。
理解了这层概念之后,我也可以放心的在Java里new了。


相关文档:

scanner java中的数据输入

前几天看到java的1.5API中新加了一个很有用处的类java.util.Scanner。前几天还在思考java中的命令行中的数据输入,看到这个类之后,忽然发现,原来sun也不是没有注意到这样的问题啊,让我们看看他们都为我们做了些什么吧:
  在java的文档中,我们可以找到这个例子:
     Scanner sc = ne ......

Java中最基础的类似于HelloWorld程序的编写

下面这段程序是实现了两个操作数加法的操作运算
/**
  *the First Java
  *@author wanglei
  *@version 1.0
  */
import java.util.Scanner;
public class FirstJava{
 public static void main(String[] args){
  
  /**声明两个整型变量*/
  int opA ......

点点滴滴(Java)

native2ascii
    在WINDOWS平台下编写的资源文件,以GB2312方式编码,在编译时需要转码,以确保在各个平台上的正确性
    编码:
        native2ascii -encoding utf8 temp.properties ApplicationResources_zh_CN.properties
 &n ......

java进制转换

java进制转换
java中进行二进制,八进制,十六进制,十进制间进行相互转换      
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
十六进制转成十进制
Integer.valueOf("FFFF",16 ......

析JAVA之垃圾回收机制

对于JAVA编程和很多类似C、C++语言有一个巨大区别就是内存不需要自己去free或者delete,而是由JVM垃圾回收机制去完成的。对于这个过程很多人一直比较茫然或者觉得很智能,使得在写程序的过程不太考虑它的感受,其实知道一些内在的原理,帮助我们编写更加优秀的代码是非常有必要的。
 
本文从以下几个方面进行阐述: ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号