关于张老师Java视频的学习(九)

第二讲:Java编程基础
 (1)、基本数据类型:数值型(整数类型byte,short,int,long.浮点型float,double)、字符型(char)、布尔型(boolean)
 (2)、引用数据类型: 类(class)、接口(interface)、数组(array)
 (3)、在变量类型转换中,当变量1的字节码长度小于变量2的字节码时,这种转换可以自动转换,反之则需要强制转换。
 (4)、千万注意,while后不可加分号“;”,do-while语句后面的判断条件后一定要记得加“;” 。
 (5)、 每次在键盘输入字符的时候,必须按回车键才能完成输入,这样,键盘输入的缓冲区里,实际存储了三个东西:1、输入的字符串 2、回车 3、换行符
 (6)、浮点数float在内存中的表示形式:占4个字节,共32位,左边第一位为符号位s,左边第二位开始的8个位为指数e的值m,之后的23位为数据值有效位e。
  float浮点数的由来:value =  s*m*2^e-150. 其中,m = (e == 0) ?(bits & 0x7fffff) << 1 :(bits & 0x7fffff) | 0x800000;最大最小浮点数的计
  算,参考JDK文档。无穷大与非数字.
 (7)、浮点数不能用于条件判断中,因为浮点数有精度,无法判断其精确值,只能用大于或者小于某个数来判断。
 (8)、Java中的  栈内存  与  堆内存:
  栈内存:Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些(基本类型的变量)和(对象的引用变量)都是在(函数)
     的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量
     分配的内存空间,该内存空间可以立即被另作它用。在函数所申请的空间中给变量分配。
  堆内存:堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或者对象
     之后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变
     量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象,引用变量就相当于是为数组或者对象起的一个名称。引用变量是普通的变量,
     定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句
     所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空
     间不放,在随后的一个不确定的时间被垃圾回收器收走(释放掉)。
  区别:· 栈内存主要存放类中的成员域变量 ; 堆内存主要存放由 new 创建的对象和数组。
        · 栈内存中的变量,其作用域之外不在存在,并自动释放该变量的内存空间 ; 堆内存中的对象,由垃圾回收器来回收,即使不在该对象的作用域内,
        · 该对象仍然占用着堆内存空间,在没有被引用的时候,也不会被释放,直到被回收。这就是内存泄露的原因之一。
        · 功能上的区别:栈主要用来执行程序,而堆主要用来存储对象。
  联系:栈内存中的变量,存储的引用变量,可以引用堆内存中的对象。其实就是指针,并存储着堆内存中的对象的首地址。引用变量就相当于是为数组或
   对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。
  栈有一个很重要的特殊性,就是存在栈中的数据可以共享。
  堆栈(stack):内存总是向一个方向增加或向相反方向减少,这个内存区用于存放方法或块中声明的局部变量。遇到局部变量声明时(包括调用方法中的
          变元变量-通C中的形参)内存增长,退出方法或块时这些变量弹出堆栈。
  堆(heap):用于存储对象,对象的引用放在堆栈区,但是对象的数据区必须存放在堆中。堆是内存单元构成的一个巨大的表。New语句生成新对象时,
    保留的小块内存单元随时进行分配,一个内存单元块不再被现有变量引用时,这些不用的单元被释放和收集起来。

  堆内存存放的有:String、基本数据类型、对象引用、static静态代码块等
  栈内存存放的有:StringBuffer、对象等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值