java基础知识(2)

JVM(  java  virtual  machine),即java虚拟机的缩写。

GC (Garbage Collection)  :垃圾收集器

类加载:当程序主动使用某个类时,如果该类还未被加载到内存中,系统会通过加载,连接,初始化三个步骤来对该类进行初始化,JVM将会连续完成这三个步骤,也把这三个步骤统称为类加载或类初始化

堆:首先堆是动态分配的,JVM并不会自动释放这部分内存,只有等待系统的GC来进行回收。

栈:是在类加载中由系统静态分配的,而且分配时按照内存的高低地址进行分配。这部分内存系统会自动进行释放。

String是一个特殊的类型,它存储的机制是引用类型。

堆:需要程序员自己申请,可能用到的关键字有new、malloc、delete、free等等,一般速度比较慢

栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。


基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。

引用类型值则是指那些保存在 堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。

在将一个值赋给变量时,解析器必须确定这个值是基本类型值,还是引用类型值。基本数据类型的值在内存中分别占有固定大小的空间,因此可以把他们的值保存在栈内存中。对于保存基本数据类型的变量,我们可以说他们是按值访问的,因为我们操作的是它们实际保存的值。

如果赋给变量的是一个引用类型的值,则必须在堆内存中去为这个值分配空间。由于这种值的大小不固定,因此不能把它们保存到栈内存中。但内存地址的大小是固定的,因此可以将内存地址保存在栈内存中。这样,当查询引用类型的变量时,就可以首先从栈中读取内存地址,然后再“顺藤摸瓜”找到保存在堆中的值。对于这种查询方式,我们把它叫做按引用访问,因为我们操作的不是实际的值,而是被那个值所引用的对象。


复制变量值:

(1)如果从一个变量向另一个变量复制基本类型的值,会在栈中创建一个新值,然后把该值复制到为新变量分配的位置上。

var num1 = 5;

var num2 = num1;

这2个“5”是完全独立的,它们可以参与任何操作而不会相互影响。

(2)

当一个变量向另一个变量复制引用类型的值时,同样也会将存储在栈中的值复制一份到为新变量分配的空间中。不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象。复制后,两个变量实际上将引用同一个对象。因此改变其中一个变量,就会影响到另一个变量:

var obj1 = new Object();

var obj2 = obj1;

obj1.name = "Nicholas";

alert(obj2.name);    // "Nicholas"





包装类:包装类就是把基本类型变成对象类型。

Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就能够看出他们分别对应于 boolean、char、int、long、float和double。而String和Date本身就是类。所以也就不存在什么包装类的概念了。



“==”比较的是值(基本数据类型比较的是值,引用类型比较的是在栈中存放的内存地址)【变量(栈)内存中存放的对象的(堆)内存地址
equal用于比较两个对象的值是否相同【不是比地址】

(特别注意)Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重载equals方法。




穿插点C语言的知识:
在用"%c"输入时,空格和“转义字符”均作为有效字符。
例: 
scanf("%c%c%c",&c1,&c2,&c3); 
输入:a□b□c↙ 
结果:a→c1,□→c2,b→c3 (其余被丢弃)





JAVA中intValue()和ValueOf()什么意思、


两个方法,是数据类型转化的方法。 intValue() 如Integer类型,就回有intValue()方法意识是说,把Integer类型转化为Int类型。其他类似,都是一个意思 。valueOf() 如String就有valueOf()方法,意识是说,要把参数中给的值,转化为String类型,Integer的valueOf()就是把参数给的值,转化为Integer类型。其他类似,都是一个意思。把参数给的值转化成所需的数据类型。


注意:

包装类都有 parseType(String str) 静态方法,可以把字符串直接转化成基本数据类型的值。

valueOf()是把一个包装类转化成另一个包装类,若要转化成基本的数据类型的值,还需要调用typeValue()方法


周长:perimeter

面积:area


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值