On Java8 读书笔记(二)

思想:Java 中万物(几乎)皆对象

 

1.类的创建

      1.1 类

         如果一切都是对象,那么是什么决定了某一类对象的外观和行为呢?换句话说,是什么确定了对象的类型?

   class 关键字类来描述一种新的对象(新建一个类)

class ATypeName {
 // 这里是类的内部
}

          使用new 关键字来创建一个这种类型的对象

 

       1.2 字段

           类里存放两种类型的元素:方法(method)字段(field)

           类的字段可以是基本类型,也可以是引用类型。

           通常,字段不在对象间共享。

 

       1.3 基本类型默认值

基本类型初始值
booleanfalse
char\u0000 (null)
byte(byte) 0
short(short) 0
int0
long0L
float0.0f
double0.0d

 

 

2.对象

     2.1 对象操纵

       在 C/C++ 中,对象的操纵是通过指针来完成的。

       虽万物皆可为对象,但我们所操纵的标识符实际上只是对对象的“引用”

 String s = "this is string";

     2.3 对象创建

       引用”用来关联“对象”。

       new 关键字代表:创建一个新的对象实例。

String s = new String("this is string");

     2.2 对象清理

      只要你需要,new 出来的对象就会一直存活下去。 相比在 C++ 编码中操作内存可能会出现的诸多问题,这些困扰在 Java 中都不复存在了。在 C++ 中你不仅要确保对象的内存在你操作的范围内存在,还必须在使用完它们之后,将其销毁。

      我们在 Java 中并没有主动清理这些对象,那么它是如何避免 C++ 中出现的内存被填满从而阻塞程序的问题呢?

      答案是:Java 的垃圾收集器会检查所有 new 出来的对象并判断哪些不再可达,继而释放那些被占用的内存,供其他新的对象使用。也就是说,我们不必担心内存回收的问题了。你只需简单创建对象即可。当其不再被需要时,能自行被垃圾收集器释放。垃圾回收机制有效防止了因程序员忘记释放内存而造成的“内存泄漏”问题。

     2.3 基本存储类型

       有一组类型在 Java 中使用频率很高,它们需要特殊对待,这就是 Java 的基本类型。之所以这么说,是因为它们的创建并不是通过 new 关键字来产生。通常 new 出来的对象都是保存在堆内存中的,以此方式创建小而简单的变量往往是不划算的。所以对于这些基本类型的创建方法,Java 使用了和 C/C++ 一样的策略。也就是说,不是使用 new 创建变量,而是使用一个“自动”变量。 这个变量直接存储"值",并置于栈内存中,因此更加高效。

基本类型大小最小值最大值包装类型
booleanBoolean
char16 bitsUnicode 0Unicode 216 -1Character
byte8 bits-128+127Byte
short16 bits- 215+ 215 -1Short
int32 bits- 231+ 231 -1Integer
long64 bits- 263+ 263 -1Long
float32 bitsIEEE754IEEE754Float
double64 bitsIEEE754IEEE754Double
voidVoid

     2.4 作用域

{
    int x = 12;
    // 仅 x 变量可用
    {
        int q = 96;
        // x 和 q 变量皆可用
    }
    // 仅 x 变量可用
    // 变量 q 不在作用域内
}
{
    int x = 12;
    {
        int x = 96; // Illegal
    }
}

          在上例中, Java 编译器会在提示变量 x 已经被定义过了。因此,在 C/C++ 中将一个较大作用域的变量"隐藏"起来的做法,在 Java 中是不被允许的。 因为 Java 的设计者认为这样做会导致程序混乱。

3.方法使用

 [返回类型] [方法名](/*参数列表*/){
     // 方法体
 }

       3.1 返回类型

          [对象引用].[方法名](参数1, 参数2, 参数3);

          int x = a.f();

       3.2 参数列表

boolean flag() { 
    return true; 
}

double naturalLogBase() { 
    return 2.718; 
}

void nothing() {
     return;
}

void nothing2() {

}

4.代码注释

/* 这是
* 跨越多行的
* 注释
*/

/* 这是跨越多
行的注释 */

// 这是单行注释

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值