【Java基础】基础类型、包装类型(类)的变量声明、初始化、作用域及使用情况

环境:
MacBook Pro 15
jdk8
IntelliJ IDEA

引子

看源码是发现Character的最大值’\uFFFF’、最小值’\u0000’,好奇了下:Java中char是16位(2字节)的存储,作为字符,Java使用了Unicode编码,所以’\u0000’对应整数0,’\uFFFF’对应65535。’\u0000’的默认输出是个小方块(不是空格,空格对应Unicode字符’\u0020’)

package com.diduo.jb.primitive;

public class CharacterTest {

    /**
     * Character
     * MIN_VALUE = '\u0000'
     * MAX_VALUE = '\uFFFF'
     * @param args
     */

    public static void main(String[] args) {
        System.out.println('\u0000'); // 小方格
        System.out.println("hello" + '\u0000' + "world");
        System.out.println('\uFFFF');
        System.out.println('\u0000' + 0);
        System.out.println('\u0001' + 0);
        System.out.println('\uFFFF' + 0);
        System.out.println('\u0020'); // 空格

    }
}

这里写图片描述

大家在平时使用Java基础类型时,是每次变量声明紧跟着赋值操作?
还是分场景有不同的处理,具体有哪些场景?
对包装类型(类)的使用又是啥情况?
如果对类型的声明、初始化、作用域等使用问题,比较清楚,平时使用便可游刃有余。

Java变量类型

“全局变量”、“局部变量”等的定义分析可以参考:菜鸟教程:C作用域规则

由于Java是面向对象语言,所有内容抛开对象(类)都没有具体意义;变量也是在类中,以及具体方法中。
“成员变量”:类中(方法外)声明(定义)的变量,成员对象(没有 static 修饰);
“局部变量”:方法中声明(定义)的临时变量;

变量声明、作用域

类中可以以成员对象的方式,声明变量;作用域跟着对象走。
方法中也可以直接声明局部临时变量;作用域随着方法结束走到尽头,等待垃圾回收。

初始化

  1. 类“成员变量”初始化,跟随类的初始化,由构造函数完成;当然也可以传入初始值,对应完成成员变量的初始化;(下边针对默认无参构造函数)

    (1). 基础类型的成员变量:随着类的初始化,构造函数会给基础类型的成员变量赋基础类型的默认值
    (2). 包装类型(类对象的引用类型)的变量:默认初始化为null;
    (3). 数组、集合、Map等类型的变量:同(2),只是初始化单个对象VS对象集合的区别;

  2. 方法“局部变量”,声明、初始化需要一气呵成,方法中没有初始化的变量是无效变量不能使用。

TIPS:
1. Java中变量的声明,相当于开辟了内存空间。具体数据的存储还和区分变量的类型、Java的内存结构,类的成员变量、方法中的局部变量在栈堆的存储
2. Java集合,foreach在遍历时也会生成临时变量,所以foreach遍历时,不能进行修改操作;
3. 变量的声明还会和一些关键字static、final等挂在一起,等下次关键字专题再细说。
4. 重点推荐java变量与内存深入了解,讲的比较细、全。

参考:

java变量与内存深入了解
菜鸟教程:C作用域规则
ssgg:关于变量的分析
https://blog.csdn.net/weixin_38470004/article/details/76468269

猜你喜欢

转载自blog.csdn.net/guodonggang/article/details/81172304
今日推荐