问题汇总
检测复习,带着问题学习!
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-内存在哪
- register寄存器:最快的内存,无法控制。在处理其中,数量非常有限。
- stack:在RAM中,通过栈指针来分配和释放内存。这是仅次于寄存器的最快内存。基本数据类型,对象的引用等程序中所有内容在其生命周期里都位于stack中。
- heap:一般目的的内存池,也位于RAM中。存储了所有对象。不需要程序员控制资源释放,但是它会比stack消耗更多的功夫在资源调度和回收上。
- 常量内存(constant storage):存放常量,有些常量在嵌入式系统中也会被选择性放到ROM中。
- Non-Ram Storage(非RAM内存):存放在程序之外的数据,比如数据库之类。
4-数据类型
特殊情况:原始类型
相比于对象,java提供了原始类型数据,这些数据不通过引用,直接拥有该数据,并且都被存储在stack
中。因此原始类型是非常高效的。
boolean
char 16bits
byte 8bits
short 16bits
int 32bits
long 64bits
float 32bits
double 64bits
void
所有的数都是有符号的
Java提供高精度算数
BigInteger和BigDecimal,可以和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() {
}
}