Java基础知识

Java基础知识

对象的存储

在java 编程思想中,java有五个不同的地方可以存储数据:
1. 寄存器

这是最快的存储区,因为它位于处理器内部。但是由于寄存器数量有限,所以它是根据需求进行分配,无法手动干预的。

2. 堆栈

位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器那里获得直接支持。堆栈指针向下移,则分配新的内存,向上移则释放那些内存。其速度仅次于寄存器,但是必须知道存储项的大小和生命周期,这一限制会限制程序的灵活性,所以在堆栈中只存储引用,而不存储对象。

3. 堆

    通用内存池,用于存放所有的java对象

4. 常量存储

    常量值通常直接存放在程序代码内部,这样做是安全的,因为他们永远不会被改变。

5. 非RAM存储

    如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。
    基本的例子是:流对象和持久化对象。在流对象中,对象转化为字节流,通常发送给另一台机器。持久化对象则将对象存放于磁盘上。

java的基本类型

java的基本类型有以下几种

基本类型大小最小值最大值默认值对象类型
boolean---falseBoolean
char16 bitsUnicode 0Unicode 216 -1‘\u0000’(null)Character
byte8 bits-128127(byte)0Byte
short16 bits 215 2151 (short)0Short
int32 bits 242 231 -10Integer
long64 bits 263 263 -10LLong
float32 bits3.4e-451.4e380.0fFloat
double64 bits4.9e-3241.8e3080.0dDouble
void----Void

由于其生命周期以及大小都可以确定,java的基本类型值在创建后被直接存储在栈中,因此更加高效.

对象的创建

java的对象通过new关键字创建
如:Integer ten = new Integer(10);
这里就创建了一个内容为10的Integer对象,而前面的ten则是对后面创建对象的一个引用。
但是对于基本类型,我们可以直接引用它的值
如:int ten = 10;
因为java的基本类型直接存储在栈中,而栈中的生命周期和大小都是确定的,所以不管执行多少次,这里的10指向的内存地址都是同一个。

方法,参数和返回值

java中的函数成为方法,方法的基本组成如下:名称,参数,返回值和方法体。
其基本形式如下:

ReturnType methodName(ArgumentList ... ){
    MethodBody
}

通过对象调用方法时,需要先列出引用名称,后面是句点,方法名称和参数,示例如下:

objectName.methodName(argument1,argument2);

java数组

当创建一个对象数组时,实际上就是创建了一个引用数组,每个引用都会被初始化为null。

还可以创建基本数据类型的数组,编译器会确保这种数组的初始化,它会将这种数组所占的内存全部置成零。

java注释

java的注释分为单行注释和多行注释
单行注释:
//单行注释

多行注释

/**
 *多行注释
 */
注释中的标签

java中用标签和注释的形式来加注文档
@see 允许用户引用其他类的文档,以超链接的形式生成See Also 条目
@link 同@see,但是生成的是label
@docRoot 文档树页面的显式超链接
@inheritDoc 从基类继承相关文档
@version 版本信息
@author 作者
@since 指定最早使用的版本
@param 参数
@throws 抛出异常
@deprecated 已过期不再维护的对象或方法

Java 自动装箱与拆箱

基本数据类型含有自动装箱(autoboxing)和拆箱(unboxing)的功能

一般情况下,创建一个Integer对象是这样的:
Integer nine = Integer(9);
但是,事实上,我们可以这样创建:
Integer nine = 9;
实际运行的代码则是:
Integer nine = Integer.valueOf(9);
这种将基本类型自动转化成封装对象的功能成为自动装箱。

而当我们引用基本类型时,我们可以这样:
Integer nine = 9;//自动装箱
int basicNine = nine;
这里直接将nine的值转化为basicNine对应的基础int值,实际运行的代码如下:
int basicNine = nine.intValue();

值得注意的是valueOf的方法中有如下实现:

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

当int大于等于-128并且小于等于127时,自动从缓存中获取,并返回对象。
所以当运行以下代码时

Integer a1 = 100;
Integer a2 = 100;
if(a1 == a2){
    System.out.println("a1与a2地址相同");
}

执行后会打印出信息

但是如果以下代码

Integer a1 = 200;
Integer a2 = 200;
if(a1 == a2){
    System.out.println("a1与a2地址相同");
}

则不会打印。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值