为什么程序需要变量和类型
如果想让程序处理真实世界的数据,就必须让程序可以存储东西。
变量就是程序用来存储数据的盒子,而数据类型就是数据上的标签,告诉计算机这个盒子里放的是什么,占多大空间,能做什么运算。
一、变量
每个变量包含三个部分:
①数据类型:决定盒子多大,能装什么
②变量名:标签的名字
③值:盒子里装的东西
Java是一个强类型语言,一个变量声明为什么类型就只能装什么类型的数据。
二、变量的声明与赋值
2.1 先声明,后赋值
intage;age=25;2.2 声明时直接复制(推荐)
intage=25;string="Hello"2.3 一次声明多个同类型变量
inta=10,b=11,c=12;2.4 重新赋值变量
intage=85;age=90;System.out.println(age);//结果为90局部变量(方法内部声明的变量)必须先赋值才能使用,否则编译报错
成员变量(类里方法外)才有默认值
三、8中基本数据类型
Java数据类型有两种:基本数据类型(8种,存值本身)和引用数据类型(存地址,包括类、接口、数组等)
3.1 速查表
| 分类 | 类型 | 字节 | 取值范围/说明 | 默认值 |
|---|---|---|---|---|
| 整数 | byte | 1 | -128~127 | 0 |
| 整数 | short | 2 | -32768~32767 | 0 |
| 整数 | int | 4 | 约±21亿(常用) | 0 |
| 整数 | long | 8 | 约±922亿(最大整数) | 0L |
| 浮点 | float | 4 | 单精度:约6~7位小数 | 0.0f |
| 浮点 | double | 双精度:约15~16位小数(常用) | 0.0d | |
| 字符 | char | 2 | 单个Unicode字符,0~65535 | ‘\u0000’ |
| 布尔 | boolean | 1 | true或false | false |
3.2 四种整数类型
整数类型有四种,区别在于所占空间的大小、能装多大的数
long类型数据后面需要使用L后缀,否则编译器会把他当成int类型数据,这是数据会溢出造成编译报错。
longa=10L;3.3 两种浮点类型
浮点数就是小数,单精度后面必须加f或F,双精度是Java默认的类型。
浮点数在计算机中使用二进制存储,像0.1这种十进制数在二进制中就是无限循环的,存下会产生微小的误差。所以在进行精密计算时最好使用BigDecimal类。
floatb=1.1F;doublec=2.12;3.4 字符串char
char用来存储单个字符,用单引号包裹。它本质上是一个16位无符号整数,取值为0~65535每一个值对应这Unicode编码
chse='A';3.5 布尔型boolean
布尔型只有两个数值:true代表真,false代表假,通常用于条件判断,他们不能和整数互相转换
\booleanah=true;四、引用数据类型初探
除了8种基本数据类型之外,所有数据都是引用类型数据。他们存的不是数据本身,而是数据在内存中的地址
4.1 String(字符串)
String是Java最常用的数据类型,用来表示一段文字,用双引号包裹:
Stringname="夏明";4.2 数组
数组是用来装同一类型的数据集合:
int[]num={10,20,30}五、类型转换
不同类型的数据混在一起运算时会涉及类型转换
5.1 自动转换(隐式)
小范围——大范围,自动完成没安全风险。
5.2 强制类型转换(显示)
大范围——小范围,需要手动写(目标类型),可能丢失精度或溢出
六、常量:不可变变量
有些值在程序运行当中不可以被修改,并且使用final关键字声明的变量叫做常量。
七、命名规范与作用域
7.1 标识符命名规则
- 必须由字母、数字、下划线、美元符号组成
- 不能以数字开头
- 不能使用Java关键字
- 要区分大小写
- 长度不限,但不易过长
7.2 命名规范
- 变量名/方法名:小驼峰命名法(首字母小写,后续单词首字母大写)
- 类名/接口名:大驼峰命名法(所有单词首字母大写)
- 常量名:全大写、下划线分隔
- 包名:全小写,下划线分隔
7.3 变量的作用域
变量只在它所在的大括号范围内有效,除了这个范围就不认识了
publicclassScopedemo{publicstaticvoidmain(string[]args){inta=10;}{intb=20;Syetem.out,println(a);//可以访问System.out.println(b);//可以访问}Syetem.out,println(a);//可以访问System.out.println(b);//编译报错}八、大坑提醒
- 局部变量未初始化就是用
- 整数溢出
- 浮点比较不用==,普通比较使用误差范围
- 忘记long的L和faoat的F
- char用单引号,String用双引号
- byte/short运算后赋值回原类型