Java变量与数据类型
1、注释
//单行注释
/*多行注释*/
/**文档注释*/
/**
什么是注释?
解释说明的文字
注释的作用?
对代码的解释说明
便于后期维护
注释的分类:
单行注释
作用域:只在当前行有效
嵌套:可以嵌套单行注释,不能嵌套多行注释和文档注释
位置:一行代码的上面或者行尾
多行注释
作用域:多行
嵌套:可以嵌套单行注释,不能嵌套多行注释和文档注释
位置:类的上面或者方法的上面
文档注释
作用域:多行
嵌套:可以嵌套单行注释,不能嵌套多行注释和文档注释
位置:类的上面或者方法的上面
区别:文档注释可以存在于类的api文档中---javadoc
*/
public class Demo {
public static void main(String[] args) {
}
}
2、标识符
/*
标识符:
在Java中的一切需要起名字的地方的这个名字都是标识符
标识符的命名规则
1)数字,字母,下划线,美元符号$任意组合而成,数字不能放在首位
2)Java严格区分大小写
3)关键字不能作为标识符使用
关键字:
Java中具有自己的用法或者用途的一些词
关键字会变色
所有的关键字都是小写
保留字:Java中将来可能具有自己的用法或者用途的一些词,如:const goto
标识符的命名规范
1)见名知意
2)驼峰命名原则
包:全部小写
单级包:单个文件夹
多级包:多个文件夹嵌套
类|接口:每个单词的首字母大写
方法|变量:第一个单词全部小写,从第二个单词开始每个单词的首字母大写
常量:全部大写
*/
public class Identifier {
public static void main(String[] args) {
int a=6;
int A0_$=16;
System.out.println(a);
System.out.println(A0_$);
}
}
3、变量
/*
变量:
在程序运行过程中,其值可以发生改变的量
在内存中开辟一块空间,用来存放指定类型的数据
用来存储数据, 变量(内存空间的大小由数据类型决定) 数据类型(由要存储的数据决定) 数据
变量的定义与使用:
1.声明的同时赋值
数据类型 变量名 = 变量值;
int(整数) double(小数) char(字符) String(字符串) boolean(布尔)
2.先声明后赋值
数据类型 变量名; --声明
变量名 = 变量值; --赋值
3.同时声明多个变量
注意:等号是唯一一个自右向左运算的符号
变量需要关注的点:
数据类型
变量名(标识符的命名规则规范)
变量值
作用域:{}
变量只能在其作用范围内可以使用
变量在使用时的注意事项(输出,运算)
1.变量必须已声明
2.并且已经赋值
3.从变量的而声明开始,到包括它的,最近的}结束为止
变量的分类:
局部变量:方法,语句块{}声明的变量,局部变量使用前必须声明并且赋值
成员变量:类的方法外,不赋值有默认值
int-->0 double-->0.0 char-->' ' String-->null boolean-->false
*/
public class Variable {
//成员变量
String memberVar = "成员变量";
public static void main(String[] args) {
//System.out.println(name);
//存储一个学生的年龄 18->int
int age=18;
//存储学生的姓名 "因为" -->字符串
String name="因为";
System.out.println(name);
System.out.println(age+1);
double money;
money=100.1;
System.out.println(money);
int x,y,z;
x=y=z=10;
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
}
3.1、Java 变量类型
在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。
以下列出了一些变量的声明实例。注意有些包含了初始化过程。
Java语言支持的变量类型有:
- 类变量:独立于方法之外的变量,用 static 修饰。
- 实例变量:独立于方法之外的变量,不过没有 static 修饰。
- 局部变量:类的方法中的变量。
3.2、Java 局部变量
- 局部变量声明在方法、构造方法或者语句块中;
- 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
- 访问修饰符不能用于局部变量;
- 局部变量只在声明它的方法、构造方法或者语句块中可见;
- 局部变量是在栈上分配的。
- 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
3.3、实例变量
- 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
- 当一个对象被实例化之后,每个实例变量的值就跟着确定;
- 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
- 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
- 实例变量可以声明在使用前或者使用后;
- 访问修饰符可以修饰实例变量;
- 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
- 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
- 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
3.4、类变量(静态变量)
- 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
- 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
- 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
- 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
- 静态变量在第一次被访问时创建,在程序结束时销毁。
- 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
- 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
- 静态变量可以通过:ClassName.VariableName的方式访问。
- 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
4、常量
/*
常量:
在程序执行过程中,其值不可发生改变的值
字面值常量:
整数常量
小数常量
字符常量
字符串常量
布尔常量:false true
空常量:null
自定义常量:
被final修饰的变量为常量
*/
public class Constant {
public static void Constant (String[] args){
final double PI = 3.1415926535;
System.out.println(PI);
}
}
5、数据类型
/*
数据类型:
基本数据类型: 4类8种 :规定存储数据的大小
计算机基本存储单位:字节 1byte = 8bit;
数值型
整型 表示名称 表现形式 范 围 大 小
字节型 byte [-128,127] 1个字节
短整型 short [-32768,32767] 2个字节
整型 int [-2147483648,2147483647] 4个字节
长整形 long [-2^63,2^63-1] 8个字节
整型的字面常量值默认int类型
如果想要存储比int类型更大的long类型的数据,需要在数据的后面添加l/L,推荐使用L
浮点型 表示名称 表现形式 精 度 大 小
单精度 float 表示精度为7位有效数字 4个字节
双精度 double 表示精度为16位有效数字 8个字节
浮点类型默认的字面常量值时double类型
如果要想给float赋值需要在数据的后面添加f/Fca
注意:浮点类型运行可能发生不精确
字符型 表示名称 表现形式 范 围 大 小
字符型 char 0~65535 2个字节
字符型的表现形式:
1)0~65536之间的整数
2)' '中包裹一个字符
字符型参与运算,会先转为对应的十进制数再参与运算
布尔型 boolean true|false 1bit
引用数据类型:类 接口 数据[]
*/
public class Main {
public static void main(String[] args){
byte b = 127;
System.out.println(b);
short s = 127;
System.out.println(s==b);
int i = 2147483647;
System.out.println(i);
long l = 2147483647;
System.out.println(l);
double d = 4.0;
float f = 4.0f;
System.out.println(d);
System.out.println(f);
char c = ' ';
char c1 = 72;
char c2 = 'g'+1;
System.out.println(c);
System.out.println(c1);
System.out.println(c2);
boolean bl = true;
System.out.println(bl);
}
}
6、类型转换
/*
数据类型类型转换
boolean类型不参与类型转换
自动类型提升
小范围类型的数据到大范围类型会发生自动类型提升
强制类型转换
大范围类型的数据赋值给小范围的变量,需要发生强制类型转换,有可能损失精度
小范围类型 变量名 = (小范围类型)大范围类型数据
如果多个的数据参与运算,最终结果会提升成为参与运算的数据的最大类型
如果比int小的char,byte,short参与运算时,会自动类型提升为int类型
如果给byte,char,short赋值,只要在其范围内的常量就能成功赋值
byte -> short -> char -> int -> long -> float ->double
*/
public class Main {
public static void main(String[] args){
byte b = 127;
//自动类型提升
int i = b;
//强制类型转换
short s = (short)i;
System.out.println(b);
System.out.println(i);
System.out.println(s);
//如果多个的数据参与运算,最终结果会提升成为参与运算的数据的最大类型
double d = b +i;
System.out.println(d);
//如果比int小的char,byte,short参与运算时,会自动类型提升为int类型
char c = 'c';
int i1 =c + s +i;
System.out.println(i1);
}
}