【Java基础】变量

从这篇文章起开始正式进入正题啦,本文将较为简单的介绍一下变量以及常量。变量,顾名思义,就是可以变的量,常量那么久相反了,常常不变的量就叫常量。_(¦3」∠)

变量

在 Java 中,任何一个变量都得有他的 “种族”(类型)。所以每当你创造一个变量的时候,就需要告诉编译器,它是哪个 “种族” 的~

类型 变量名 [ = 值];
》1. 创建这个变量的过程叫声明变量
》2. 第一次给值的这个变量叫初始化
》3. 每一句代码的后面都得加; 结尾,不支持中文
虽然说起名字这种事情是大家的自由,但是 Java 为了防止它不认识你起的名字,也有一些条件限制((2)篇编码规范中有提及)。大驼峰小驼峰就不在细说,这里说一说基本要求:只能以$、字母、下划线、数字来进行组合,且必须遵守命名规范第一条。详情见 java 基础(2)——命名规范(1)。
for example:
变量错误原因
1a不能以数字开头
$a/a$不能以美元符号开头或结尾
_a/a_不能以下划线开头或结尾
a*/Hello Ahan不能有除 $_字母数字外任何字符,空格也不行哦
213不能为纯数字
public不能用关键字(上节有解释关键字哈)

变量的数据类型

说到变量的 “种族”,那就得详解一下变量的八种基本变量类型 le~

序号类型名称字节范围默认值说明
0byte字节1 字节-128~1270存储一个字节数据, 超过范围报错
1short短整型2 字节-2-15~215-10兼容性考虑,一般很少使用到
2int整型4 字节-2-31~231-10存储整数,常用。
3long长整型8 字节-2-63~263-10存储长整数,long 性变量后面常加上 L
4float单精度浮点型4 字节1.4013E-45~3.4028E+380.0F存储浮点数(浮点型通常是小数)后面可带 F 用以区分
5double双精度浮点型8 字节4.9E-324~1.7977E+3080.0D存储浮点数,后面可带 D 用以区分
6char字符型2 字节0~216-1'\u0000'存储一个字符
7boolean布尔型1 字节true,flaseflase存储一个逻辑变量 (true,false)

注意:这里序号是从 0 开始,一般计算机语言都从 0 开始哦,养成这个习惯吧~
另外: 1 字节 = 8 位,215 = 32768

补充——数据类型


boolean 的大小:理论上占一位,实际上单个的 boolean 类型在编译的时候使用的是 int 类型,占 4 个字节即 32 位,在数组中每一个 boolean 在 JVM 中占一个字节。转自:https://blog.csdn.net/u010642004/article/details/50099913

补充——变量的声明与初始化 20190421

在程序运行的过程中,内存有一部分的空间是变化的,这个空间就叫变量。那么声明变量就是申请了一个内存空间。内存空间在开辟之时,如果没有赋值的话,内存空间会根据变量的类型来设置默认值。

如果有赋值的话,就会将值存入内存空间,否则就是默认值。变量的用处:存放数据(可操作的存储空间)

int i;  // 声明变量。申请了一个内存空间,当前为int的默认值0
i = 1;  // 初始化变量。将i赋值为1

1. 不建议一行定义多个变量

2. 浮点型变量的表示

十进制:1.109、11.09、110.9、1109、110900

科学计数法:1109e-3,、1109E-2、1109E-1、1109、1109E2

aEb:a 乘 10 的 b 次方

3. 浮点数是不精确的,一定不要用于比较!

float f = 0.1f;
double d = 1.0 / 10;
System.out.println(f == d); // 结果为false
 
float d1 = 423432423f;
float d2 = d1 + 1;
if (d1 == d2) {
    System.out.println("d1==d2");// 输出结果为d1==d2
} else {
    System.out.println("d1!=d2");
}

如果非要进行比较的话,可以使用 java.math 包下的 BigInterger 类以及 BigDecimal 类。

BigInterger 实现了任意精度的整数运算、BigDecimal 实现了任意精度的浮点运算

BigDecimal  bd2 = BigDecimal.valueOf(0.1);
BigDecimal  bd3 = BigDecimal.valueOf(1.0/10.0);
        
System.out.println(bd2.equals(bd3)); 

 4. char 型变量只能用单引号,不能用双引号。可以使 (int) 变量或者 0 + 变量来转成数字。String 是字符序列(引用类型)

 5. boolean 型变量在选择结构中,直接写:if(变量){}  即可,不推荐写成:if(变量 ==true){}


代码测试

上面的表可能看着比较冷酷无情 (/ω\),我们用代码执行一下看看到底上面说的有没有假话吧~

  • byte
// byte的用法
        byte a = 100;
        System.out.println("byte变量的值为:" + a);

输出:

反例:

【报错:java.lang.Error】

  • short
// short的用法
short s = 400;
System.out.println(s);
  • int
// int的用法
int a = 1;
System.out.println(a);
  • long
// long的用法
long a = 100L;
System.out.println(a);
  • float
// float的用法
float a = 100;
System.out.println("float输出结果是" + a);

输出结果:

因为定义的为浮点型,所以这里输出的值是 100.0
那么我们需要注意的是直接定义float a = 100.0;这个是错误的。

【报错:java.lang.Error】


为什么呢?我们接着看下一个变量。

  • double
// double的用法
double a = 100;
System.out.println("double输出结果是" + a);

输出结果:

然后我们看看 100.0~


诶?好像 double 可以了,那么这就说明小数在 Java 中是默认为双精度的浮点型存储。那么问题又来了,我就想要个 float 的单精度怎么办?
So easy~

这时候就很简单了,只需要告诉它我这个是 float 型的就 OK 啦~

  • char
// char的用法
char a = '我';
char b = 'c';
System.out.println(a + "-" +b);
char c = 99;
System.out.println("c=="+c);

输出结果:

 

有个奇怪的输出冒出来了啊喵,为啥 99 变成 c 了呢?这就涉及到了编码的问题惹,Java 用的是 Unicode 编码(包含 8 位的 ASCII 编码),所以 99 会被转成相应的字符了~ 那这里就附上 ASCII 编码的表格以做记录吧~

 

字符编码表 - DEC 为十进制

以上,阿里嘎多,20190405 from ahanwhite。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值