为什么需要变量
- 一个程序就相当于一个世界
- 变量相当于世界的每一个物质
- 变量是程序的基本组成单位
变量的介绍
概念
变量相当于内存中一个数据的存储空间,你可以把变量看成一个班级的某个学生,根据这个学生的名字我们就可以找到这个同学。
变量有三个基本要素(类型+名称+值)
变量声明
//数据类型 + 变量名,变量名...
String name;
int id,age;
变量初始化
//成员变量可以不用赋值,有默认初始化
//局部变量必须要初始化,否则编译不了
int a;
a = 10;
String name = "张三";
// jdk10以后,就可以不需要声明类型(从变量的初始值来判断类型)
var i = 10
变量的使用注意事项
1.变量表示内存的一个存储区域,不同的变量,类型不同,占用的空间大小不同
2.在这个存储区域有自己的变量和数据类型
3.变量必须得先声明在使用,是有顺序的
int num = 10;//int
System.out.println(num);//10
4.在该区域的值可以在同一个类型不断变化
//初始化
int a = 10;
//错误
a = "张三";
//正确
a = 99;
5.在同一个作用域变量不可以有重复的名字
//初始化
int a = 10;
//错误
int a = 99;
6.变量的三要素(变量名,值,数据类型) ,既 变量 = 变量名 + 值 + 数据类型
数据类型
注意:字符串是引用类型,因为字符串的本质是类
整数类型
浮点类型
说明
- 浮点数在计算机中的存储形式:浮点数 = 符号位 + 指数位 + 尾数位
- 尾数可能丢失 造成精度损失
浮点类型使用细节
- 与整数类型一样,浮点有固定长度, 不会影受到操作系统的影响
- Java的浮点型默认是Double型,声明float类型 需要加F或f
- 浮点的表达形式
public class Double_ {
public static void main(String[] args) {
double a = 1.1;
double b = 1.1f;
double c = .123;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
4.一般情况下 使用Double 因为Double比float更精准
@Test
public void m1(){
double a = 1.1234567845;
float b = 1.1234576845f;
System.out.println(a);//1.1234567845
System.out.println(b);//1.1234577
}
字符类型
1.基本介绍
字符型有单个字符,字符类型是char,char是两个字节,可以存放汉字,多个字符我们用字符串String表示。
char c1 = 'y';
char c2 = '杨';
char c3 = 97;
2.字符型使用细节
1.字符常量是用单引号''括起来的单个字符。 例如:char c1 = 'y';char c2 = '杨';char = '7';
2.java还允许使用转义字符''来将后面的字符转成特殊字符常量。例如char = '\n'(/n 表示换行)。
3.java中,char的本质是一个整数,输出时,是unicode码对应的字符。
4.可以给char赋一个整数,然后输出,这时会按照对应的unicode字符输出。
例如:
char c3 = 97;
System.out.println(c3);//a
5.char类型是可以进行运算的,相当于一个整数,因为它们有对应的unicode码值。
布尔类型
基本介绍
- 布尔类型也叫boolean类型,boolean类型数据只允许取值true和false,没有null。
- boolean类型只占一个字节。
- 布尔类型适用于逻辑运算,一般用于流程控制语句。
- if条件控制语句
- while循环控制语句
- do-while循环控制语句
- for循环控制语句
- 案列演示:
boolean team = true;
if(team){
System.out.println("成功");
}else {
System.out.println("失败");
}
基本数据类型数据转换
一,自动数据类型转换
基本介绍
当java程序在进行赋值或者运算时,精度小的类型自动转为精度大的数据类型,这个就是自动类型转换。
自动数类型转换注意和细节
- 有多种类型的数据进行运算时,系统会先将所有精度小的转换成精度最大的那种数据类型,在进行计算。
int n = 10;
float num1 = n + 1.1;//错误, n + 1.1的最大类型时double
float num2= n + 1.2F;//正确,n + 1.2F的最大类型时float
double num3 = n +1.3;//正确,n + 1.3的最大类型时double
- 我们把精度大的数据类型转换成精度小的数据类型,此时就会报错。
int num1 = 1.9;//错误,double类型的精度比int类型的精度大
- byte,short和char之间不会相互自动转换。
// 如果要把具体的值赋给byte,先判断该值是否在byte范围内(-128——127),如果是就可以
byte b1 = 1;//正确,1在 -128——127 范围内
int n = 2;
byte b2 = n;//错误, 变量赋值,需要判断类型
char c = b1;//错误, byte,short和char之间不会相互自动转换。
- byte,short和char他们可以计算,计算时先转换成int数据类型。
byte b1 = 1;
byte b2 = 3;
short s1 = 2;
short s2 = b1 + s1;//错误, b1 + s1 是int类型
int n1 = b1 + s1;//正确
byte b3 = b1 + b2;//错误, b1 + b2 是int类型
5.boolean不参与类型转换
boolean temp = true;//boolean不参与类型转换
int num1 = temp;//错误, boolean不参与类型转换
二,强制类型转换
基本介绍
自动类型转换的逆过程,将精度大的数据类型转换成精度小的数据类型。使用时要加强制转换符(),但可能会造成精度损失;格外注意。
int n = (int)1.9;
System.out.println(n);
强制转换类型说明
- 当数据的大小从大转换成小的时候,就需要使用到强制转换。
- 强转符号只针对于最近的操作数有效,往往会使用小括号来提升优先级。
int a = (int)10*1.5 + 5.5;
int b = (int)(10*1.5 + 5.5);
System.out.println(a);
System.out.println(b);
- char可以赋值int的常量值,但不能赋值int的变量值,需要强制转换。
char c1 = 10;
int n1 = 10;
char c3 = n1;//错误
char c4 = (char)n1;//正确
- byte和short,char类型在进行运算时,当做int类型处理
基本数据类型和String类型转换
基本介绍
- 在开发中,我们会经常需要将基本数据类型转换成String类型,或者将String类型转换成基本数据类型。
- 基本数据类型转换String类型,语法: 在数据类型的值+""就好了。
//例如
int i = 10;
float f =1.3f;
double d = 1.2;
boolean b = true;
String s1 = i + "";
String s2 = f + "";
String s3 = d + "";
String s4 = b + "";
System.out.println(s1 + " "+ s2 + " "+ s3 + " "+ s4);
- Stirng类型转换成基本数据类型,语法:通过基本数据类型的包装类调用parseXXX()方法即可。
Interger.parseInt("123");
Double.parseDouble("123.9");
Float.parseFloat("123.95");
Short.parseShort("12");
Long.parseLong("1234");
Boolean.parseBoolean("true");
Byte.parseByte("12");
注意细节
- 在将一个String类型转换成基本数据类型时,要确保能转换成有效数据,例如我们可以把"1234"转换成一个整数,但不能把"HelloWord!"转换成一个整数。
- 如果格式不正确,就会抛出异常,程序终止。