对象都存储在堆中,用引用来操作对象,例如
String s;
对象还不存在,只是引用已经存在了。其初始化一般用new。一般定义引用的同时初始化:
String s=new String("abc");
String类有一个特殊的地方,可以直接用下面的方法初始化:
String s="abc"。性质是一样的。
对象的存贮:
对象都是动态创建的。其本身都存储在堆上,而其引用都存储在堆栈里面,例如上面的String,对象存贮在堆上,而引用s存在堆栈里面。还有一些其他的,一般类中的static成员存贮在静态内存区,一直存在,并且在内存的固定位置。常量值通常存在代码内部或者rom里面。
基本数据类型:所有类型都有+-号。字符占2个字节。布尔型占内存大小不固定。仅仅定义为能够获取true或者false的值。包装类不多说了,不过java提供了两个高精度计算的类:BigInteger和BigDecimal。有无限的大小和精度。以后用到的话再仔细研究了。
数组:数组中存放的是对象的引用了。每个引用多大?
数组有了越界检查,以后还会有详细的讲解。
类的基本成员初时值:基本数据类型作为类的成员变量的时候,即使不初始化也有一个初时值,boolean为false,其他的为0。但是这些基本数据类型作为函数的局部变量的时候,不初始化是没有确定的初时值的。
名字的可视性:只看一个例子
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
这种是不对的,不象c++。编译会出错,原因是为了去除混淆。
javadoc:很有用的一个工具,程序中注释要想在生产的doc中出现需要有这样的规则:
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
也就是/后面跟两个*开始,结束是一个*。注释可以分别针对类,函数,和变量,分别放在它们的定义前面。
注释里面还可以加入嵌入式HTML,和一些有@开头的标签。具体的用法可以自己查看。