Java变量、基本数据类型及其对应的包装类型

本文主要讲解Java变量、基本数据类型及其对应的包装类型基础细节知识

一、变量

Java变量的定义

任何的语言必须要的恐怕是变量了
在Java中变量是十分的容易上手,于C、C++语言类似,Java的变量声明:
数据类型 变量名;//分号是必须的
变量名命名规则:包括 英文,数字, _ ,$ ,而且不能以数字开头;

变量的定义举个栗子:

1
2
3
4
5
int a;
int _b;
int $c;
int 3a;//编译错误
int &c;//编译错误

编译错误是指,在程序运行前,编译器对程序做的一些基本语法的检查错误;

另外要注意的一点:

没有初始化的局部变量不能直接使用,如:

1
2
int a;
System.out.println(a); //编译错误

如果作为成员变量出现,即这个变量是属于某个类所有,而不属于某个方法函数所有的变量,可以不初始化,其默认的值为对应的0,或者是null;

二、基本数据类型

基本数据类型:

如图基本数据类型如上图的八种:

数据类型

字面量:如

1
int a = 3//3就是字面量,或者称作直接量

使用的时候主要注意的有以下几点

1、基本类型字面量默认类型

整形类型的字面量默认为int,所以在初始化或者赋值的时候不能超过int的最大值,如果超过;则编译错误,

如下面就是编译错误:

1
int a = 1000000000000;

所以当:数值较大的时候要使用long 类型;

1
long a = 1000000000000L;//加个L代表是long 类型

同时double和float也有这样的问题,带小数点的字面量的数据类型为double

1
2
float c = 1.222222222222222222;//编译错误
double d = 1.222222222222222222;

正确如下写法,float类型的值明确带个f或者F:

1
2
float i = 1.02f;
double j = 1.02;

2、另外在做运算的时候,要注意不同类型的转换问题

转换如图所示:

变量转换

排在最右端的是大类型,也就是当把小类型的字面量赋给大类型字面量的时候,会发生类型自动向大类型转化,但是大类型不能直接向小类型转化,需要强制转化如:

1
2
3
double i = 2//此时的 i 为double 
int j = i; //编译错误;此时的i为double大类型 不能直接转化为小类型;
int j = (int)i;

但是 如果double有小数点的话,强制转化会造成小数点的损失精度,如:

1
2
3
double i = 2.6;
int j = (int)i;
System.out.println(j); //结果是2,并不会四舍五入

如果强转为小类型的数据类型的范围较大,会出现异常.如:int i = (int)10000000000000000000000;错误,所以要根据数据类型的具体情况而.

3、变量的作用域

Java语言支持的变量类型有:

  • 成员变量
  • 局部变量

其实变量的这些分类就如下图一样明了,

  • class 中定义的变量 而不属于其他任何方法的变量,叫做成员变量.
  • 属于某个方法的变量叫做局部变量

变量

4、 变量作用域和生命周期

  • 作用域:

    成员变量的作用域比较大,站得高看得远,这个类的所有的方法都能够”看到它”,都能去用它
    局部变量作用域:只在它所在的方法中被使用,其他方法”看不到”这个变量,但是也可以与成员变量同名,但是这个时候成员变量的调用就不能直接调用了要用到this,this说明是这个类的东西.

  • 生命周期:

    明显的:
    成员变量的生命周期整个类的生命周期是一致的,就是这个类 活到什么时候,这个成员变量就活到什么时候.
    局部变量的生命周期它所在方法的生命周期一致,调用这个方法结束后,这个局部变量就被销毁了.

练一练:

这就像”男人(女人)和 人 分不开,人 和 运动 分不开”一样 ,数据类型 和 变量 是分不开的,变量 和 运算符 也是分不开的.像人天生为分为男女一样,一个变量在声明的时候也要先说明数据类型.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//类的声明一定要大写,而且要与文件同名
public class MyProgram {
char x = 0;
public void main(String[] args) {
//java的输出函数 System.out.println()
//数据类型 和 变量 是分不开的,变量 和 运算符 也是分不开的
//这就像"男人(女人)和 人 分不开,人 和 运动 分不开"
//像人天生为分为男女一样,一个变量在声明的时候也要先说明数据类型
int a, b, c; // 声明三个int型整数:a、 b、c。
int d = 3, e, f = 5; // d声明三个整数并赋予初值。
byte z = 22; // 声明并初始化z。
double pi = 3.14159; // 声明了pi。
char x = 'x'; // 变量x的值是字符'x'。 可以与成员变量重名,
x = this.x; //用this可以调用到成员变量
System.out.println(x); //输出将是0;
}
}

三、包装类型

基本数据类型对应的包装类型

基本数据类型:byte,int,short, long,boolean,char,float,double
包装类型: Byte,Integer,Short,Long,Boolean,Character,Float,Double

自动拆包装包

包装数据类型不仅仅看上去是把首字母大写了,而且还有了一个本质的变化,那就是摇身一变,变成了引用类型
随着JDK的升级,包装类有了自动拆包(包装类型变成对应的基本类型),装包(基本类型变成对应的包装类型):
例如:

1
2
3
4
5
6
7
Integer i = new Integer(1);//初始化
System.out.println(i.getClass());//class java.lang.Integer
int j = 0;
i = Integer.valueOf(j);//这就是所谓的装包但是可以直接写成, i = j;
int a = i.intValue(); //这就是所谓的拆包,也可以直接写作,int a = i
System.out.println(i);//此处进行了自动拆包
String与基本数据类型的转化,可以参考第六节

四、运算符

算数运算符

在发例子之前先了解一下运算符和优先级,其实里面大部分大家都认识了;
运算符

特别注意的是++--,++-- 在变量前,先做自增或自减操作,再用,在变量后面的话,先用变量,然后做自增或自减操作
例如:

1
2
3
4
5
int B = 20;
int x = ++B;
int y = B++;
//结果
x = 21;y=21;

但B最终都是发生变化的,B = 22;

关系运算符:

关系运算符

Java运算符优先级

当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。

再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

优先级

-------------感谢您的阅读祝您生活愉快!-------------

本文标题:Java变量、基本数据类型及其对应的包装类型

文章作者:小明

发布时间:2018年01月08日 - 21:01

最后更新:2018年01月19日 - 16:01

原始链接:https://www.iteway.com/2018/01/08/Java变量、基本数据类型及其对应的包装类型/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

支持一杯咖啡
0%