第二章:变量

本文详细介绍了Java编程中的变量概念、类型(包括基本数据类型和引用数据类型)、赋值规则、数据类型转换,以及字符串拼接、字符编码和浮点数处理。重点讲解了变量使用注意事项,以及基本数据类型之间的转换策略。
摘要由CSDN通过智能技术生成

1. 变量的介绍

  • 一个程序就是一个世界,变量用来描述这个世界里有什么,包含什么。
  • 变量是程序的基本组成单位

变量的三要素:类型、名称、值。

eg:

 int i =0;
 int b = 3;  

Jvm在执行定义语句时,会在内存为变量开辟一个空间,每个开辟的变量空间在内存上是用地址来体现。

 b = 89; 

Jvm在执行赋值语句时,将原来变量空间的值进行替换。

1.00 变量的介绍

  • 概念:变量相当于内存空间中的一个数据存储空间的表示,可以把变量认为是一个房间的门牌号,通过门牌号我们能很快找到这个房间。
    而通过变量名,我们可以访问到这个变量(值)
  • 使用步骤: 声明——赋值——使用,一般前两步一起用:
int a = 50;

1.0.1 变量的使用注意事项

  • 变量表示内存中的一个存储区域【不同的变量,类型不同、占用内存大小不同】。
  • 该区域有自己的名称【变量名】和类型【数据类型】。
  • 可以在同一类型范围内不断的变化。

2. +号的使用

  • 拼接字符串

3. 数据类型

java是强类型语言:“强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。

Java8种基本数据类型:

- 数值型:byte[1]、short[2]、int[4]、long[8] 。 - 浮点型:float[4]单精度、double[8]双精度。 - 字符型 char[2] :存放单个字符 'a' 。 - 布尔型 boolean[1]:存放true,false。

Java3种引用数据类型:

- class类
- interface 接口
- Arrays 数组

整数类型

类型占用内存空间范围
byte【字节】1字节-128 ~127 【-2^8 ~ 2^7 - 1】
short【短整型】2字节-32768 ~32767 【-2^16 ~ 2^15 - 1】
int【整型】4字节-2147483648 ~2147483647 【-2^32 ~ 2^31 - 1】
long【长整型】8字节【-2^64 ~ 2^63 - 1】
  • java的整型类型不受操作系统的影响,保证了java的可移植性。
  • Java的默认整型类型为int,声明long必须后边加"l"或"L"。
  • bit是计算机中的最小存储单位,byte是计算机中基本存储单元,1 byte = 8bit。

浮点类型

- 浮点的分类
类型占用内存空间范围
单精度4字节-3.403E38 ~ 3.403E38
双精度8字节-1.798E308 ~ 1.798E308

浮点数在计算机中存放形式:浮点数 = 符号位 + 指数位 +尾数位

尾数部分可能丢失,造成精度损失(小数都是近似值)

- java的浮点常量默认为double型,声明float型常量,要在常量后加“f”或“F”
// (错误的,浮点数默认类型是double,不可以将8个字节的数字存放在4字节的变量中)
float ff = 1.1;
// 正确写法:
float ff = 1.1f;
- 等价关系
double dd = .123;
// 等价于
double dd  = 0.123;
- 科学计数法

5.12e2 = 5.12 * 10的2次方
5.12E-2 = 5.12 / 10的2次方

- 通常情况下,我们用double,因为精度比float高。
double dd = 2.1234567821;
// 会丢失尾数位
float ff = 2.1234567821F;
- 浮点数陷阱(精度损失)
double d1 = 2.7;
double d2 = 8.1 / 3; // 输出一个2.7的近似值。
System.out.println(d1 == d2);
// 返回false
  • 扩展:那么如何判断浮点数是否相同呢?
double num1 = 2.7;
double num2 = 8.1 / 3;
System.out.println(Math.abs(num2 - num1) > 0.00001);

字符型

- 字符型本质:

在Java中,char的本质是一个整数,在默认输出时,是unicode码对应的字符。
要输出对应的数字,可以(int)字符。

  • 字符型的使用:

用’ '引起来的。

- 字符型可以进行运算。
'a'+10;
// 结果是107。

4. 编码

  • Ascll编码表一共128个字符。
  • UTF-8编码:字母占1个字节,汉字占3个字节。

boolean类型

- 特点:

只有两个值: true、false;

5. 基本数据类型转换

- 自动类型转换:

java中精度小的数据类型可以自动转换为精度大的数据类型。

- 数据类型按精度(容量排序)
  1. char ==> int ==> long ==> float ==> double
  2. byte ==> short ==> int ==> long ==> float ==> double
// 将低精度的char[2]赋值给高一级的int[4] 编译通过;
int temp = 'a';
// 将低精度的int[4](整型),高精度的double[8](双精度浮点型) 编译通过
- 自动转换注意和细节
  1. 多种数据类型进行运算时:自动转换成精度最高(容量最大)的那种类型再进行运算。
  2. 把高精度值赋给低精度编译会报错。
  3. byte、short、char之间不进行自动转换。只要运算中有这3者,运算结果会自动转换成inti
byte b = 10;
char car = b;   // 编译不通过,不可以自动转换。
short sot = 10;
short sot2 = b + sot;  // 编译不通过,  byte和short相加结果会转换成int
  1. 当把一个具体的数赋给byte时,编译器首先会判断这个数在不在byte的容量内(-127 ~ 128),是的话编译通过。
    当把一个变量赋给byte时会先判断类型,如果精度(容量)大于byte则编译错误。
byte b = 10;   // 通过
int x = 2;
byte b = x;    // 编译错误
  1. boolean不参与自动转换。
  • 强制类型转换

大精度转换成小精度的变量时会使用到。

  • 需要注意精度损失和数据溢出(慎用!!)
  • 强转符号(),只对最近的操作数起作用,用小括号提升优先级。
int num = (int)(10 * 3.5 + 6 * 1.5)

6. 基本数据类型和String之间的转换

  • 基本数据类型转换为String
int i1 = 100;
double d2 = 10.0;
boolean b3 = true;
String str1 = i1 + "";    // 将会把i1转换为字符串输出
  • String转换为基本数据类型(通过基本类型的包装类进行转换parse.XX)
String str = "100";
int i =Integer.parseInt(str);
  • String转换为char类型(用str.charAt(0))
  • 如果遇到转换不了的类型就会抛出一个运行时异常(NumberFotmatException)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值