当前位置: 首页 > 工具软件 > Thinkin' Tags > 使用案例 >

万物皆对象-《Think in java》第二章

陆俊智
2023-12-01

问题汇总

检测复习,带着问题学习!

1.内存有哪几部分?具体作用?
2.原始类型是什么?有什么用?
3.原始类型数据有哪些?所占大小是多少?
4.Java中需要高精度数的时候,用什么对象?
5.Java中如何处理数组越界

Java会进行范围判定,越界后会抛出异常。

6.static的作用
7.tags是什么

万物皆对象

相比于C++,java是更纯的OOP语言。C++和java都是混合语言,但是C++对于混合重视更多,因为C++是向下兼容C语言的,使得一些C++的方面更加复杂。

1-我们使用引用操作对象(manipulate objects with references)

需要记录句子的时候,我们创建String的引用。
String s;
然而这只创建了引用,而没有对象。最好的办法是初始化时,实例化对象。
String s = "hello world!"
这里使用了java的特性,使用了引用文本(quoted text)

2-必须创建所有的对象

String s = new String("hello");

3-内存在哪

  1. register寄存器:最快的内存,无法控制。在处理其中,数量非常有限。
  2. stack:在RAM中,通过栈指针来分配和释放内存。这是仅次于寄存器的最快内存。基本数据类型,对象的引用等程序中所有内容在其生命周期里都位于stack中。
  3. heap:一般目的的内存池,也位于RAM中。存储了所有对象。不需要程序员控制资源释放,但是它会比stack消耗更多的功夫在资源调度和回收上。
  4. 常量内存(constant storage):存放常量,有些常量在嵌入式系统中也会被选择性放到ROM中。
  5. Non-Ram Storage(非RAM内存):存放在程序之外的数据,比如数据库之类。

4-数据类型

特殊情况:原始类型

相比于对象,java提供了原始类型数据,这些数据不通过引用,直接拥有该数据,并且都被存储在stack中。因此原始类型是非常高效的。
boolean
char 16bits
byte 8bits
short 16bits
int 32bits
long 64bits
float 32bits
double 64bits
void

所有的数都是有符号的

Java提供高精度算数

BigIntegerBigDecimal,可以和int、float结合使用,只是需要使用方法而不是操作符。

5-垃圾处理

会给数组分配空间,不会出现C/C++中数组越界的情况而崩溃。对象分配的内存会交给java的garbage collector(GC)进行回收

6-Class

类中由成员变量和成员方法组成。

7-static

表明特定的成员变量和方法不依赖于具体的对象。也会被称为类数据和类方法(class data\class method)

8-第一个Java程序

public class FirstProgram {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.getProperties().list(System.out);
        System.out.println(System.getProperty("user.name"));
        System.out.println(System.getProperty("java.library.path"));
    }
}

System有很多方法,可以打印出当前机器的性能配置。等等。

Tags:提供作者、版本、是否废弃等信息

给第一个程序加上标签,这里只有部分标签。

/** The first java program
 * @author feather
 * @version 1.0
 * */
public class FirstProgram {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.getProperties().list(System.out);
        System.out.println(System.getProperty("user.name"));
        System.out.println(System.getProperty("java.library.path"));
    }
    /** test method
     * @param void
     * @deprecated this method don't do anything
     * @exception exceptions No exceptions thrown
     * */
    public static void testDeprecated() {

    }
}
 类似资料: