欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

万物皆对象

程序员文章站 2022-04-06 21:01:32
...

万物皆对象(1)

java中的一切都是对象

java中被操作的时对象的引用(通过引用改变对象)

java不是按引用传递,java是按值传递引用(https://www.journaldev.com/3884/java-is-pass-by-value-and-not-pass-by-reference

引用可以独立于对象本身存在,所以安全的做法是创建引用的时候做初始化动作

万物皆对象(2)

通常,使用“new”操作符创建对象。

数据的分布及内存的分配:

  1. 寄存器
  2. 栈:需要考虑存于其上的数据的生命周期,这限制了程序了灵活性。java的对象引用存储在栈中,但是对象本身存储在堆中
  3. 堆:RAM中的一个通用的内存池,对象存在的区域,编译器不需要考虑存储对象的生命周期,但是创建和清理堆存储的时间要长于栈存储。
  4. 常量存储
  5. 非RAM存储:对象的另一种存储方式(如流对象和持久对象)

原始类型(基本类型):

直接持有值的变量,存储在栈中,高效创建和释放。

java定义了基本类型的大小,在不同的机器架构中类型大小不变,这也是java易于移植的一个原因。

万物皆对象

 

高精度数字类型:BigInteger(支持任意精度整数)和BigDecimal(支持任意精度的固定点书,可以用于算钱)

数组:

  1. C/C++中的数组只是内存块,若程序使用数组时超出内存范围或使用前未初始化数组,将会导致意想不到的后果。
  2. java中以一定的内存开销来进行数组范围和数组索引的检查,以提高数组使用的安全性和使用效率;
  3. java中的数组存放的是引用的数组,每个引用初始化指向null;
  4. java中基本类型的数组内存为0。

万物皆对象(3)

范围:命名的范围由花括号决定,不允许使用局部变量隐藏全局变量的语法(C/C++)。

对象的范围:

  • 与基本类型的范围不一致,对象可以存在于作用域之外。
  • 至于 new所创建的对象所占用的内存都将由垃圾收集机制(GC)进行统一释放。
  • GC计算new所创建的对象是否已经没有引用指向了。

万物皆对象(4)

用class关键词创建新的类(对象的集合)。使用new创建新的对象。

类中有成员数据和成员方法,访问成员数据或修改成员数据使用连接句点。

类中字段若是基本类型会初始化。然而局部变量并不会初始化。

初始化表

Primitive type

Default

boolean

false

char

‘\u0000’ (null)

byte

(byte)0

short

(short)0

int

0

long

0L

float

0.0f

double

0.0d

万物皆对象(5)

方法的构成:方法名,参数,返回值和方法体。

 

方法名和参数列表构成了方法签名。

 

return,参数类型和参数名。

 

无return值用void注明。此时return仅做离开方法的用途

万物皆对象(6)

构建java程序前的准备工作:

命名可见

使用其他组件的方式:

  • 调用当前源文件中的预定义类。
  • 使用import调用其他源文件中的预定义类。

startic关键词:单独唯一的字段存储和与对象无关的方法调用。

万物皆对象(7)

注释:

C风格:/*……*/

C++风格://

注释文档提取工具:javadoc

注释文档工具助手:doclets

javadoc使用规范:所有javadoc指令都存在于/**……*/。

两种使用javadoc的方式:

  1. 内嵌式HTML
  2. doc tags

doc tags形式:

  1. 独立文档标签:以@开头的指令
  2. 行内形式:@开头,用花括号包围。

有三大类注释:类注释、方法注释、字段注释(在什么前就是什么注释)

例:

/** A class comment */
public class Documentation1 {
  /** A field comment */
  public int i;
  /** A method comment */
  public void f() {}
}

javadoc仅仅会处理public和protected修饰的成员

可以使用-private在使javadoc处理所有的成员

 

嵌入式的HTML:格式化注释

例:

/**
* <pre>
* System.out.println(new Date()); 
* </pre>
*/
/**
* You can <em>even</em> insert a list: 
* <ol>
* <li> Item one
* <li> Item two
* <li> Item three
* </ol>
*/

注:别使用<hr>或<h1>等标签以避免混淆

 

一些tag示例

@see:参阅其他的类中的注释,生成“see also”超链接

{@link package.class#member label}:行内使用,功能同@see

{@docRoot}:相对根路径的相对路径

{@inheritDoc}:文档继承

@version:版本信息

@author:作者信息

@since:jdk特性版本

@param:参数信息

@return:方法返回值信息

@throws:异常抛出信息

@deprecated:方法弃用标签,自Java SE5之后,被@Deprecated所取代

 

⚠️idea生成javadoc:Tools —— Generate JavaDoc

万物皆对象(8)

代码风格:类首字母大写,成员量首字母小写,采用驼峰命名样式

例:

class AllTheColorsOfTheRainbow { // ...
class AllTheColorsOfTheRainbow {
      int anIntegerRepresentingColors;
      
      void changeTheHueOfTheColor(int newHue) {
          // ... 
      }
      
      // ... 
}

     

 

 

     

 

 

     

 

 

     

 

 

 

     

 

 

 

 

 

相关标签: java编程思想