声明变量的作用
(1)指定在内存空间中分配的空间大小
(2)规定这个变量所能接受的运算
下面我们举个例子进行变量的声明和赋值
package day01;
/**
* @author 超级皮皮虾
* @description 变量的声明和赋值
*/
public class VariableDemo01 {
public static void main(String[] args) {
int a;
a = 20;
int b = 10;
char c = 'a';
System.out.println("a的值为:"+a);
System.out.println("b的值为:"+b);
System.out.println("c中存放的字符是"+c);
}
}
变量是一种标识符,它会遵循标识符的命名规则
(1)JAVA中变量可由字母、数字、下划线和美元符($)组成
(2)变量名不能以数字开头
(3)变量名不能是JAVA中的关键字
*关键字:是JAVA中已经提前命名好的,具有特点功能或者标识作用的字符串
package day01;
/**
* @author 超级皮皮虾
* @description 变量的使用
*
*/
public class VariableDemo02 {
public static void main(String[] args) {
int outer = 10;
{
int inner = 20;
System.out.println("第一次输出inner="+inner);
System.out.println("第一次输出outer="+outer);
}
//System.out.println("第二次输出inner="+inner);
System.out.println("第二次输出outer="+outer);
}
}
实例讲解:上述代码定义了outer、inner两个变量,outer在整个main()方法内,而inner在main()方法下还有 一 层" { }"代码块,所以inner变量只在代码块内可见,即inner的生命周期只在代码块内,除了代码块,inner变量分配的内存空间就会释放,所有在上述代码倒数第4行是无法输出inner变量的。
作用:在程序中通常会有一些变量,它贯穿整个程序,然而反复的声明,会造成内存空间的浪费,而且比较麻烦,这时候我们通常会定义使用静态常量,让这个常量生命周期可以贯穿整个程序,方便我们的使用
例子:在图书馆中有本图书,馆藏数量为200本,如果在每个功能模块都定义个变量来存储这个书本数,会很麻烦,并且不能保存数据的准确性(即一个模块修改了数值,另一个功能模块不可见),因此我们就可以声明一个全局的静态常量,来帮助我们记录这200本书籍的数量情况
实例:
package day01; /** * @author 超级皮皮虾 * @description java中定义常量 * */ public class FinalDemo { private static final int BOOKNUM = 200; public static void main(String[] args) { System.out.println("书本的数量有:"+BOOKNUM); } }
实例讲解:在上述例子中,即常量的定义方法,常量的名字通常全部大写。final是修饰常量的java关键字,在需要声明常量的时候需要加上,static也是java关键字,只有加了static才能被main函数使用。
基本数据类型
如上图java中数据类型分为基本数据类型和引用数据类型,本章将会对基本数据类型讲述
现在请大家跟着我把基本数据类型认识一下,如下
数据类型 字节数 类型说法
byte 1 字节型
short 2 短整型
int 4 整型
long 8 长整型
boolean 1 布尔型
char 2 字符型
float 4 单精度浮点型
double 8 双精度浮点型
上述就是关于java基本数据类型的简述,分别是八大数据类型,以及各类型所占有的字节数,字节数越大,表示存储的数据长度能更长,这里的数据长度,大家可以理解为是能装的数据的大小空间,在数据类型后面还给大家提供了一下各类型数据的叫法。帮助大家记忆。
在下面的讲解过程中,我会将byte、short、int、long作为一部分,boolean一部分,char一部分,float、double一部分共4个部分为大家讲解,而在最后对大家强调一下long类型和float类型
1.int,byte,short,long类型
在日常编程中,我们经常需要处理一些0数据,因为一些安全性问题,以及实用性问题,我们需要给数据定义类型来将数据赋值给变量,这样我们就可以通过变量名获得对象,这样我们就可以反复对数据进行使用,举个例子,定义一个变量名为a的整型变量,用来装一个书本本数的数据,假设书本有20本,我们可以这样
package test; /** * @author 超级皮皮虾 * @description 基本数据类型的演示 * */ public class DataType { public static void main(String[] args) { //定义一个变量用来存储书本本数,数学书有20本 int a = 20; //在下面我们想输出给控制台,看看我们还剩多少本数学书 System.out.println("仓库还剩余"+a+"本数学书"); } }
我们可以查看控制台的效果:
上述代码只给大家演示了一下变量的定义和输出使用,我们还看不出来将数据赋值给变脸的好处,接下来我给大家再来模拟一个场景
package test; /** * @author 超级皮皮虾 * @description 基本数据类型的演示 * */ public class DataType { public static void main(String[] args) { //定义一个变量用来存储书本本数,数学书有20本 int a = 20; //在下面我们想输出给控制台,看看我们还剩多少本数学书 System.out.println("仓库还剩余"+a+"本数学书"); //小明过来想买走16本书,这时候我们看仓库还有20本,数量够,我们就卖16本 a = a - 16; //这时候,我还想看一下仓库有多少本书,查一下 System.out.println("仓库还剩余"+a+"本数学书"); } }
再次查看一下控制台效果
看到效果没有,在程序中,我们经常会使用到数据,通过变量,我们就可以通过变量名反复调用,使用我们需要的数据,进行修改的操作。而在编程中,一般根据我们需要存储的数据类型和数据长度,来决定我们需要给变量定义的类型,通常整数的数据我们都会用byte,short,int,long类型进行定义,而int类型是最常用的。因此上述只给大家做的int类型的演示,我们接下来看一下这4个类型的最大长度
package test;
/**
* @author 超级皮皮虾
* @description 基本数据类型的演示
*
*/
public class DataType {
public static void main(String[] args) {
byte byteMax = Byte.MAX_VALUE;
int intMax = Integer.MAX_VALUE;
short shortMax = Short.MAX_VALUE;
long longMax = Long.MAX_VALUE;
System.out.println("byte类型的最大值为"+byteMax);
System.out.println("short类型的最大值为"+shortMax);
System.out.println("int类型的最大值为"+intMax);
System.out.println("long类型的最大值为"+longMax);
}
}
这时同学们就可以根据自己的需要选择需要的数据类型来定义我们的变量了,记住上述输出的数据单位都是字节数,关于字节数,有需要了解的同学可以自己百度一下,这里不做详细描述
这里给大家提一下,关于变量的定义使用,大家可以将变量名当做是门牌号,而变量值是你家,你家的大小,样式就决定你的数据类型,通过门牌号我们就可以找到你的家,这里大家可以想象一下帮助理解
2.char类型
char类型,一般用来存放一个字符,所谓的字符就是一个一个的字母,也可以是数字'1'等“数字”,也可以是各种符号,反正就是一个一个的字符,这里大家需要知道的是存放'1',这里的'1'可不是数字1,他是一个字符'1'其他的数字也是一样的
下面个大家展示一下用法
package test;
public class DataType {
public static void main(String[] args) {
char c1 = 'a';
char c2 = '1';
System.out.println("c1装的字符是"+c1);
System.out.println("c2装的字符是"+c2);
}
}
演示结果还请大家自行实践一下,增加记忆,记住char类型是用来装一个一个的字符就行了
3.boolean类型
在程序中我们有时候需要用到的一个特殊类型,它的值只要两种true和false,一般用来当做标识符的变量
我们来做一个例子,if-else结构,我们将在后面的章节给大家讲述,记得boolean类型的用法就行
package test;
public class DataType {
public static void main(String[] args) {
boolean flag = true;
if(flag){
System.out.println("BigDodo是最帅的");
}else{
System.out.println("BigDodo不是最帅的");
}
}
}
4.float,double类型
区别开byte,short,int,long类型,单独为一部分,是因为这两个类型通常用来存放浮点数,所谓的浮点数就是小数,选float还是double类型,一样看长度,我们一般使用的都float类型
5.float和long类型的用法注意
package test;
public class DataType {
public static void main(String[] args) {
float a = 3.0f;
long b = 8888L;
System.out.println(a);
System.out.println(b);
}
}
注意变量的定义我们在定义float类型和long类型的时候我们都会带上标识符float类型会带着f,而long类型会带着l,这里的‘F’和‘L’大小写都可以,你们在定义float时不带'F'时候程序编译就会出现报错,而long类型不带'L',这里后面章节给大家讲解,这里只用记住定义时候需要特别注意float类型和long类型的使用就行
自动转型,什么叫自动转型?其实很简单理解,有时候我们当初设计的数据类型为int,而这时候我们有别的程序是使用的这个数据类型需要是long类型,这时候我们程序就会自动给我们将类型转换成long类型,而不需要我们去将int类型的数据去转换成long类型,我们看一下一个类型的顺序
byte->short->int->long->float->double
按照这个顺序,只有需求的数据类型比我们定义的数据类型大时,程序就会自动转换数据类型,而不需要我们转换,看到上面一个例子 long b = 8888。为什么没有抱歉,明明正确的定义应该是long b = 8888L,仔细的小伙伴就会发现了,没有错这里就是程序给我们自动将8888这个int类型的数据变成了8888L长整型的数据了
那么问题来了为什么float a = 3.0就不行呢?
java中,在定义的小数的时候,java会默认类型为double,而double在类型顺序比float靠后,也就是说double类型的数据想要变成float类型,java不会帮我们自动转型,而需要我们强制转换,同样的任何类型都这样只能自动类型转换成类型大的,而不能自动转换成类型小的,这里后面补充,先给将一下强制类型转换
package test;
public class DataType {
public static void main(String[] args) {
float a = 3.0f;
float b = (float)3.0;
System.out.println(a);
System.out.println(b);
}
}
如上述代码,如果需要强制转换类型小的这时候我们需要自己在需要转换的数据类型面前加上( ),( )里面写上我们需要转换成的类型
int num = (int)500L;
大家也可以试试long类型转换成Int类型
为什么java中大类型不能自动转换成小类型呢?
举个例子
package test;
public class DataType {
public static void main(String[] args) {
float a = 3.7f;
int b = (int)a;
System.out.println("大类型float a的值"+a);
System.out.println("小类型int b的值"+b);
}
}
我们可以看到,当将大类型值3.7转换成小类型值的时候变成了3,想象一下,这里单位如果是亿元,对吧,后果很严重。
所以在数据类型转换的过程中,我们一定需要注意数据精度、数据丢失的问题哦。