数据类型
所有的变量都必须先定义才能使用
package demo;
public class ds {
public static void main(String[] args) {
//int a;//没有定义,不能输出
int a=10;
System.out.println(a);
}
}
两大类型
-
基本类型
(1)数值类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
(2)浮点类型:float(4字节)、double(8字节)
(3)布尔类型:boolean (true或false)
(4)字符类型:char(2字节)
-
引用类型
(1)类
(2)接口
(3)数组
. 代码例子
package demo;
public class eightType {
public static void main(String[] args) {/*main方法*/
/*八大基本数据类型*/
Byte i=10;
int i2=10;
short i3=20;
long i4=200L;/*long类型要在数字后面加上L*/
char j='a';
char j2='中';/*字符只能是一个字符,如果写成 中间 是错误,这是两个字符*/
//String j3="中国";/*注意:String不是关键字*/
float k=3.4F;/*long类型要在数字后面加上F*/
double k2=3.25;
//布尔类型
boolean flag=true;
boolean flag2=false;
System.out.println(i+"\t"+i2+"\t"+i3+"\t"+i4+"\t"+k+"\t"+k2);
System.out.println(j+"\t"+j2);
System.out.println(flag+"\t"+flag);
}
}
进制的扩展
二进制:0 b开头
十进制
八进制:0开头
十六进制:0 x开头
package demo;
public class jinzhi {
/*最好完全使用浮点数进行比较*/
public static void main(String[] args) {
/*进制:二进制,十进制,八进制,十六进制*/
int i=0b10;
int i2=10;
int i3=010;
int i4=0x10;
System.out.println(i+"\t"+i2+"\t"+i3+"\t"+i4);//2 10 8 16
//float.double拓展
float j=0.1f;
double j2=0.1;
System.out.println(j==j2);//false,
float k=123455665758787935f;
float k2=k+1;
System.out.println(k==k2);//true ,因为float 是有线 ,离散 ,摄入误差 ,大约 ,接近但不等于
}
}
强制类型转换
等级:低————————————————>高
byte 、short 、int 、long 、float 、double
类型
(1)强制类型转换:(类型)变量名 (高—>低)
(2)自动类型转换:类型)变量名 (低—>高)
例子如下
package demo;
/*不能对布尔值进行转换
不能把对象类型转为不相干的类型
高等级变低等级时候,强制转换
转化的时候可能存在内存溢出或者精度问题*/
public class strongType {
public static void main(String[] args) {
float a=1.2f;
int j=5;
//强制转换
j=(int)a;//因为a是float类型,等级比int j高,所以在转换的时候要进行强制转换
System.out.println(j);// 1
byte b=3;
//自动类型转换
j=b;
System.out.println(j);// 3
//强制转换,在进行强制转换的时候是通过 编码 Unicode表 进行查找的
char z='a';
char x='中';
System.out.println(z);//a
System.out.println((int)z);//97
System.out.println((int)x);//20013
int i=128;
byte c=(byte)i;
System.out.println(c);//-128,因为byte的范围-128~127,内存溢出
System.out.println((int)-45.897f);//-45
}
}
例子二
package demo;
public class ST {
//操作较大的数的时候,注意溢出问题
public static void main(String[] args) {
int money=1000000000;
//int money=10_0000_0000;//一样的,JDK7新特性,数字之间可以用下划线分割
int year=20;
int total=money*year;
System.out.println(total);//-1474836480,计算的时候溢出了
long total2=money*year;
System.out.println(total);//-1474836480,默认就是int,也就是在转换成long之前就已经出现问题了
long total3=money*((long)year);
System.out.println(total3);//20000000000,在计算之前就已经进行了转换
}
}
变量的作用域
(1)类变量
(2)实例变量
(3)局部变量
package demo;
public class classYu {
//类变量static
static int a=1;//类变量
static double salary=6000;
//属性
//实例变量(成员变量):从属对象;如果不进行初始化,默认值为零
//布尔值:默认是false
//除了基本类型,其他的默认值都是null
String frill;//成员变量
int ds;
double dd;
String b="hello Word";//实例变量
public static void main(String[] args) {//main方法
int c=10;//局部变量:必须声明和初始化
System.out.println(c);//10
//变量类型 变量名称=new classYu();
classYu classyu=new classYu();
System.out.println(classyu.frill);//null
System.out.println(classyu.ds);//0
System.out.println(classyu.dd);//0.0
//类变量 static
System.out.println(salary);//6000.0
}
//方法
public void add() {}
}
常量
常量:初始化后不能再改变值!不会变动值
final 常量名=值;
final double PI=3.14;//常量名一般使用大写字符
package demo;
public class changliang {
//修饰符,不存在先后顺序
static final double PI=3.14;
final static double PI1=3.14;
public static void main(String[] args) {
final int PI2=10;
System.out.println(PI);//3.14
System.out.println(PI1);//3.14
System.out.println(PI2);//10
}
}
变量名规范
类成员变量:首字母小写和驼峰原则 如: userName
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线 如: MAX_VALUE
类名:首字母大写和驼峰原则 如:Man GoodMan
方法名:首字母小写和驼峰原则 如:run() 、runRun()