首页 > 其他 > 详细

变量名和标识符、整型

时间:2021-03-05 09:51:57      阅读:31      评论:0      收藏:0      [点我收藏+]
变量?用于“装”数据的。形象来说,变量就相当于一个容器.
变量是学习任何一门编程语言的开始。
Java是“强类型”的语言。

  • 所有的变量必须先声明、后使用。
  • 指定类型的变量,只能装对应类型的数据。

声明变量(定义变量)

类型 变量名 [ =初始值];

标识符:

标识符:就是名字。
标识符,可为变量、类、方法......各种各样的东西命名。

  • 标识符的规则:
    -由字母(英文、中文、日文、韩文),数字,下划线_,美元$组成,但数字不能开头.
    -标识符不能是java的关键字和保留字,但中间可以包含标识符,不能包含空格。

技术分享图片

  • 关键字:Java语言中一些有特殊意义的单词。关键字所有字母都是小写。
  • 保留字:暂时还没有使用、以后可能使用;goto 、const.
  • 直接量:true、false、null.
    一共有53个单词不能作为标识符。

    类型:

  • 基本类型
    %整型(byte、short、int、long)
    %浮点型(float、double)
    %字符型(char)
    %布尔类型(boolean类型)(boolean)
  • 引用类型
  • 强引用

Java中的引用,类似C语言中最难的指针。(我是C语言入门编程,指针的概念还是很深入我心。)通过引用,可以对堆中的对象进行操作。如:

StringBuffer stringBuffer = new StringBuffer("Helloword");

变量str指向StringBuffer实例所在的堆空间,通过str可以操作该对象。

强引用的特点:

强引用可以直接访问目标对象。

强引用所指向的对象在任何时候都不会被系统回收。JVM宁愿抛出OOM异常,也不会回收强引用所指向的对象。

强引用可能导致内存泄漏。

  • 软引用

软引用是除了强引用外,最强的引用类型。可以通过java.lang.ref.SoftReference使用软引用。一个持有软引用的对象,不会被JVM很快回收,JVM会根据当前堆的使用情况来判断何时回收。当堆使用率临近阈值时,才会去回收软引用的对象。因此,软引用可以用于实现对内存敏感的高速缓存。

SoftReference的特点是它的一个实例保存对一个Java对象的软引用, 该软引用的存在不妨碍垃圾收集线程对该Java对象的回收。也就是说,一旦SoftReference保存了对一个Java对象的软引用后,在垃圾线程对 这个Java对象回收前,SoftReference类所提供的get()方法返回Java对象的强引用。一旦垃圾线程回收该Java对象之后,get()方法将返回null。

下面举一个例子说明软引用的使用方法。

在你的IDE设置参数 -Xmx2m -Xms2m规定堆内存大小为2m。

@Test

public void test3(){

MyObject obj = new myObject();

SoftReference sf = new SoftReference<>(obj);

obj = null;

System.gc();

// byte[] bytes = new byte[1024*100];

// System.gc();

System.out.println("是否被回收"+sf.get());

}

运行结果:

是否被回收cn.zyzpp.MyObject@42110406

打开被注释掉的new byte[1024*100]语句,这条语句请求一块大的堆空间,使堆内存使用紧张。并显式的再调用一次GC,结果如下:

是否被回收null

说明在系统内存紧张的情况下,软引用被回收。

  • 弱引用

弱引用是一种比软引用较弱的引用类型。在系统GC时,只要发现弱引用,不管系统堆空间是否足够,都会将对象进行回收。在java中,可以用java.lang.ref.WeakReference实例来保存对一个Java对象的弱引用。

public void test3(){

MyObject obj = new MyObject();

WeakReference sf = new WeakReference(obj);

obj = null;

System.out.println("是否被回收"+sf.get());

System.gc();

System.out.println("是否被回收"+sf.get());

}

运行结果:

是否被回收cn.zyzpp.MyObject@42110406

是否被回收null

软引用,弱引用都非常适合来保存那些可有可无的缓存数据,如果这么做,当系统内存不足时,这些缓存数据会被回收,不会导致内存溢出。而当内存资源充足时,这些缓存数据又可以存在相当长的时间,从而起到加速系统的作用。

  • 虚引用

虚引用是所有类型中最弱的一个。一个持有虚引用的对象,和没有引用几乎是一样的,随时可能被垃圾回收器回收。当试图通过虚引用的get()方法取得强引用时,总是会失败。并且,虚引用必须和引用队列一起使用,它的作用在于跟踪垃圾回收过程。

当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在垃圾回收后,销毁这个对象,将这个虚引用加入引用队列。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

public void test3(){

MyObject obj = new MyObject();

ReferenceQueue referenceQueue = new ReferenceQueue<>();

PhantomReference sf = new PhantomReference<>(obj,referenceQueue);

obj = null;

System.out.println("是否被回收"+sf.get());

System.gc();

System.out.println("是否被回收"+sf.get());

}

运行结果:

是否被回收null

是否被回收null

对虚引用的get()操作,总是返回null,因为sf.get()方法的实现如下:

public T get() {

return null;

}

整型

所谓整型,只能装整数(包括正整数和负整数、0)
位(bit):要么0,要么1
字节(Byte): 1Byte=8bit

2^0=1
2^4=16
2^5=32
2^6=64
2^7=128
2^8=256
2^9=512
2^10=1024(K)
2^11=2048
2^12=4096
2^16=65536
2^20=M
2^30=G
2^40=T
byte : 1字节(8位)能表示236个数、取值范围:-128~127
short :2字节(16位)能表示6536个数、取值范围:-32768~32767
int : 4字节(32位)能表示4G个数、取值范围:-2G~2G-1
long :8字节(64位)取值范围太大,无需记忆。

  • 注意点:
    A - 直接给出一个整数,整数默认值是int型,如果该整数数值较小、且直接赋值给byte或short、Java也可以将它当成byte、short处理。
  • public class TestInt {
    public static void main(String[] args){
    // 类型 变量名[= 初始值];
    int abc;
    int b=23;
    System.out.println("b:"+b);
    int it=1024;
    System.out.println(it);
    //升级
    it=1025;
    System.out.println(it);
    //2的值较小(位于byte取值范围之内),因此Java可以把2当成byte处理
    byte bb=2;
    System.out.println(bb);
    //127位于byte的取值范围内,Java可以把127当成byte处理
    byte by=127;

    System.out.println(by);

    }
    }
    技术分享图片
    B - 如果直接给出一个巨大的整数,java不会自动把它当成long型处理。如果希望Java把该整数当成long处理,需要在整数后添加L或l后缀。(一般用L,因为l与1在编辑器中很难识辩)
    技术分享图片

    整数的表示形式(4种)

    十进制
    八进制: 以0开头;逢八进一,只能出现0~7
    十六进制:以0X开头或0x开头;逢16进1,只能出现0~9,a~f
    二进制:以0B或0b开头。逢二进一,只能出现0~1

技术分享图片

Fighting!!!

变量名和标识符、整型

原文:https://blog.51cto.com/15103848/2647351

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!