Java中的变量

变量指的是程序运行时可变的量,相当于开辟一块内存空间来保留一些数据,类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性。
Java中的数据类型可以按照以下方式进行划分。
在这里插入图片描述

1.基本数据类型

接下来我们一起学习一下java中的基本数据类型,总的来说java中的基本数据类型学起来要比C语言简单和形象许多,因为java是强类型语言,许多细节我们可以不用考虑。
在这里假设你经营着一家快递公司,市场上只有三种类型的快递,分别是数值型,字符型和布尔类型。针对这三种类型的快递,我们生产了8种类型的箱子来装快递。int,long,short,byte这四种箱子用来装数值型中的整型。float,double用来装数值型中的浮点型。char这种箱子用来装字符型。boolean用来装布尔类型。

1.1整型变量int

//基本语法格式
int 变量名 = 初始值;
//代码示例
int num = 10;//定义一个整型变量
System.out.println(num);

int这种箱子里面装的是整型,变量名是变量的标识,用变量名来给快递命名。在你的快递公司中,一个int型的箱子大小是4个字节。它可以表示的数据范围是**- 2 ^ 31 ~ 2 ^ 31 - 1**,大概是-21亿到+21亿。在这个范围内的整数都可以装进int型的箱子。

//在java中可以使用一下代码查看java中的整型数据范围
System.out.println(Integer.MAX_VALUE);//int的最大值
System.out.println(Integer.MIN_VALUE);//int的最小值

如果运算的结果超出了int的最大范围,就会出现溢出的情况。

1.2长整型变量long

//代码示例:
long num = 10L;//这里建议用大写的L,小写的l容易被看成数字1
System.out.println(num);

long这种箱子的大小是8个字节,它可以表示的数据范围是**- 2 ^ 63 ~ 2 ^ 63 - 1**,在这个范围内的整数都可以装进long型的箱子。

1.3短整型变量short

//代码示例:
short num = 10;
System.out.println(num);

short这种箱子的大小是2个字节,它可以表示的数据范围是**- 2 ^ 15 ~ 2 ^ 15 - 1**,在这个范围内的整数都可以装进short型的箱子。

1.4字节类型变量byte

//代码示例:
byte num = 10;
System.out.println(num);

byte这种箱子的大小是1个字节,它可以表示的数据范围是**- 2 ^ 7 ~ 2 ^ 7 - 1**,在这个范围内的整数都可以装进byte型的箱子。

1.5单精度浮点型

//代码示例:
float num = 1.0F;
System.out.println(num);

float型的箱子大小为4个字节,但是它的内部结构与整型箱子不同。它的内部具体分为3部分,它用来装浮点型的快递,快递会按特定的方式装进去,比整型的要复杂许多。

1.6双精度浮点型

//代码示例:
double num = 1.0;
System.out.println(num);

double类型的箱子大小为8个字节,它的内部结构与float相似,也分为3个部分,用它来装的浮点型数据范围要比float能装的大出许多许多。

1.7字符型变量

char ch = 'A';
System.out.println(ch);

char类型的箱子大小为2个字节,它可以装字符型的数据。而在java中用Unicode表示字符,一个字符占两个字节。只要是能用Unicode表示的字符都可以装进这个箱子。比如中文,日文等都可以。

1.8布尔类型变量

boolean value = true;
System.out.println(value);

boolean型的箱子用于装布尔类型的数据,直能装true或者false。箱子的大小没有特别明确的规定,有的快递公司是一个字节,有的是一个比特位。

2.字符串类型变量String

//语法格式
String 变量名 = "初始值";
//代码示例
String name = "zhangsan";
System.out.println(name);//打印字符串

String不是基本类型而是引用类型,在String中有一些不太方便直接表示的字符,就需要用转义字符来进行转义。
在这里插入图片描述
转义字符有很多,比较常见的有以下几个:
在这里插入图片描述
字符串的“+”操作,表示字符串的拼接。

String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);
//打印结果为helloworld

还可以将字符串和整数进行拼接:

String str = "result = ";
int a = 10;
int b = 20;
String result = str + a +b;
System.out.println(result);
//执行结果
result = 1020;

上面代码说明,当一个**+**表达式中存在字符串的时候,进行的都是拼接行为。

3.变量的作用域

变量的作用域也就是该变量能生效的范围,一般是变量定义所在的代码块.
在这里插入图片描述

4.变量的命名规则

硬性指标:
1.一个变量名只能包含数字,字母,下划线
2.数字不能开头
3.变量名是大小写敏感的,即num和Num是两个不同的变量。
注意:虽然语法上也允许使用中文/美元符$命名变量,但是强烈不建议这样做。
软性指标:
1.变量名要具有可描述性,见名知意
2.变量名不建议使用拼音
3.变量名的词性推荐只用名词
4.变量名推荐使用小驼峰命名法,当一个变量名由多个单词构成时,除了第一个单词,其他单词首字母大写。
小驼峰:int maxValue = 100;

5.常量

5.1字面型常量
在这里插入图片描述
5.2 final关键字修饰的常量

final int a = 10;
a = 20;//编译出错,提示无法为最终变量a分配值,程序无法在变量运行过程中发生修改

6.类型转换

java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有较严格的校验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.数值提升

int 和long类型的混合运算

int a = 10;
long b = 20;
int c = a + b;//编译出错,提示将long转成int会丢失精度
long d = a + b;//编译通过

结论:当int和long混合运算的时候,int会提升成long,得到的结果仍然是long类型,一个long类型的快递,int型的箱子肯定装不下,因此需要一个更大型号的long型的箱子才可以,因此将int型的数据提升为long型的数据来处理,然后再装在int型的箱子里。
byte和byte的运算

byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
//编译报错
Test.java:5:错误:不兼容的类型:从int转换到byte可能会有损失
byte c = a + b;

结论:byte和byte虽然是相同类型的,但是编译的时候出错,原因是,虽然a和b都是byte,但是计算a+b会将a和b提升成int型,再进行计算,得到的结果也是int,这是赋值给c就会出现上述错误。
这是因为计算机的CPU通常是按照4个字节为单位从内存中读写数据。为了硬件上实现方便,诸如byte和short这种处于4个字节的类型会先提升成为int,再参与计算:
用byte类型的箱子装a和b,然后将他们放在int型的箱子里进行处理,最后再装在byte型的箱子里,显然byte是装不下int的!!!
正确的写法:

byte a = 10;
byte b = 20;
byte c = (byte)(a + b);//这里强制转换为byte

就是说,如果不加说明,你的快递公司默认会用int型的箱子来处理快递,这往往会对其他类型的整型数据产生一些不友好的现象。因此需要强制类型转换,换成别的类型的箱子进行处理。
类型小结:
1.不同类型的数据混合运算,范围小的会提升为范围大的
2.对于short,byte这种比4个字节小的类型,会先提升成4个字节的int,再运算。

8.int和String之间的互相转换

int转换为String

int num = 10;
//方法1
String str1 = num +"";
//方法2
String str2 = String.valueof(num);

String转换为int

String str = "100";
int num = Integer.parseInt(str);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗月の流星劫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值