变量是程序的基本组成单位。不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位。
变量有三个基本要素:类型、名称、值
1变量概述
1、变量的概念
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)
2、变量使用的基本步骤
1、声明变量 int a
2、赋值a=60;//应该这么说:把60赋给a使用
也可以一步到位,声明的同时并赋值:int a = 60;
2、变量快速入门
变量使用入门案例
public class Var01{
//编写一个main方法
public static void main(String[]args){
//记录人的信息
int age=30;
double score=88.9;
char gender='男';
String name="king";
//输出信息
System.out.println("人的信息如下:");
System.out.println(name);
System.out.println(age);
System.out.println(score);
System.out.println(gender);
}
}
编译并运行
3、变量使用注意事项
1、变量表示内存中的一个存储区域
不同的变量,类型不同,类型不同,占用空间大小不用,比如int占4个字节,double占8个字节。
2、该区域有自己的名称(变量名)和类型(数据类型)
3、变量必须先声明,后使用
4、该区域的数据/值可以在同一类型的范围内不断变化
5、变量在同一作用域内不能重名
6、变量=类型+变量名+值
4、程序中+号的使用
当+号左右两边的都是数值类型时,作加法运算,当左右两边有一方为字符串时,作拼接运算
5、数据类型
1、8大基本数据类型
1、数值型
1、整数类型
(1)字节型byte(占1个字节)
(2)短整型short(占2个字节)
(3)整型int(占4个字节)
(4)长整型long(占8个字节)
整型的使用细节
(1)Java整型类型有固定的范围和字段长度,不受具体操作系统的影响,以保证java程序的可移植性
(2)java的整型常量(具体值,例如100)默认为int型,声明long型常量需在后面加“l”或“L”
(3)java程序中整型常量常声明为int型,除非不足以表示大数,才会使用long型。
2、浮点类型(小数)
(1)单精度浮点型float(占4个字节)
(2)双精度浮点型double(占8个字节)
浮点型的使用细节
(1)关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
(2)尾数部分可能丢失,造成精度损失(小数都是近似值)。
(3)与整数类似,长度和范围不受操作系统影响
(4)默认为双精度double类型,如要声明为float,在数字后面加“f”或“F”
(5)当我们对运算结果是小数的进行相等判断时,要小心,应该是以两个数的差值的绝对值,在某个精度范围类判断
2、字符型char(占2个字节)例如:‘a’
字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字)
字符型的使用细节
(1)字符常量使用单引号’‘括起来的单个字符
(2)java中还允许使用转义字符“\”来将其后的字符转变为特殊字符型常量,例如:’\n’,表示换行符。
(3)在java中,char的本质是一个整数,在输出时是unicode码对应的字符
(4)可以给char变量直接赋值一个整数,然后输出时会按照unicode对应的字符输出
(5)char变量可以直接进行运算,是因为其本质是一个整数
unicode码
utf-8
3、布尔型boolean(占1个字节),只有两个值true、false
boolean类型一般用在程序流程控制语句中
与其他语言不一样,java语言中的boolean类型不能使用0、1来代表false和true。
2、引用类型
1、类
2、接口(Interface)
3、数组([])
注意,在java中String不是基本数据类型,它属于引用数据类型中的类
3、基本数据类型转换
1、自动类型转换
自动类型转换的注意细节
(1)有多种数据类型混合运算时,系统首先会自动将所有数据转换成容量最大的那种数据类型,然后再进行计算,并且结果为容量最大的数据类型
(2)当我们把精度大的数据类型复制给精度小的数据类型时,会报不兼容的数据类型错误,反之则会进行自动类型转换
(3)(byte、short)和char之间不会相互自动转换
(4)byte、short、char三者之间可以进行计算,在计算时首先转换为int类型,即使是byte与short计算,或者byte与byte计算,结果都会提升为int。即这三者只要有其一参与运算,结果都会转为in
(5)boolean不参与转换
(6)自动提升原则:表达式的结果自动提升为操作数中精度最大的类型
//自动类型转换细节
public class AutoConvertDetail{
//编写一个main方法
public static void main(String[] args){
//细节1:有多种类型的数据混合运算时,
//系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
int n1=10;//ok
//float d1=n1+1.1;//错误n1+1.1=>结果类型是double
//double d1=n1+1.1;//对n1+1.1=>结果类型是double
float d1=n1+1.1F;//对n1+1.1=>结果类型是float
//细节2:当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,
//就会报错,反之就会进行自动类型转换。//
//int n2=1.1;//错误double->int
//细节3:(byte,short)和char之间不会相互自动转换
//当把具体数赋给byte时,(1)先判断该数是否在byte范围内,如果是就可以
byte b1=10;//对,-128-127
//int n2=1;//n2是int
//byte b2=n2;//错误,原因:如果是变量赋值,判断类型
////char c1=b1;//错误,原因byte不能自动转成char
}
}
2、强制类型转换
强制类型转换是自动类型转换的逆过程,即将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出。
强制类型转换注意细节
(1)强转符号只针对于最近的操作数有效,往往会使用小括号来提升优先级
(2)char类型可以保存int的常量值,但不能保存变量,需要强转。
6、基本数据类型与String类型转换
1、基本数据类型转String
只需要在将变量与""相加,例如:
2、String类型转基本数据类型
通过基本类型的包装类调用parse***方法即可
public class StringToBasic{
//编写一个main方法
public static void main(String[] args){
//基本数据类型->String
int n1=100;
float f1=1.1F;
double d1=4.5;
boolean b1=true;
String s1=n1+"";
String s2=f1+"";
String s3=d1+"";
String s4=b1+"";
System.out.println(s1+""+s2+""+s3+""+s4);
//String->对应的基本数据类型
String s5="123";
int num1=Integer.parseInt(s5);
double num2=Double.parseDouble(s5);
float num3=Float.parseFloat(s5);
long num4=Long.parseLong(s5);
byte num5=Byte.parseByte(s5);
boolean b=Boolean.parseBoolean("true");
short num6=Short.parseShort(s5);
System.out.println("===================");
System.out.println(num1);//123
System.out.println(num2);//123.0
System.out.println(num3);//123.0
System.out.println(num4);//123
System.out.println(num5);//123
System.out.println(num6);//123
System.out.println(b);//true
//怎么把字符串转成字符char->含义是指把字符串的第一个字符得到
//解读s5.charAt(0)得到s5字符串的第一个字符'1'
System.out.println(s5.charAt(0));
}
}
当然,前提是要能转换。