1、Java中基本数据类型包括:整型(byte、short、int、long)、字符型(char)、布尔型(boolean)、浮点型(float、double)三种类型。
2、所占内存分别为:byte:1Byte;short:2Byte;int:4Byte;long:8Byte;char:2Byte;boolean:1Byte;float:4Byte;double:8Byte;
3、表示数的范围byte:[-128~127];short:[-32768~32767];int:[-2147483648~2147483647];long:[-9223372036854774808~9223372036854774807];
float:[3.402823e+38 ~ 1.401298e-45];double:[1.797693e+308~ 4.9000000e-324];
4、在Java中所有的整型数据默认都为int类型,浮点型默认为double;其它类型byte、short会隐式转换(若不超出表示范围)
自动转换:byte-->short-->int-->long-->float-->double
注意:小可转大,大转小会失去精度
byte b = 10; //隐式转换
short s = 10; //隐式转换
int i = 10;
long l = 10L; //需要L或l注明
float f = 10F; //需要F或f注明
double d = 10;
5、扩展转换,扩展转换不必要进行显示的类型转换,因为目标类型足够容纳当前类型不会丢失信息。
//扩展转换,接上面的代码
short bUp = b;
int sUp = s;
long iUp = i;
float lUp = l;
double dUp = f;
char ch = '1';
int chUp = ch-48;
6、强制类型转换,将容纳更多信息的数据类型转换成一个容量更小的数据类型,可能存在精度损失的风险,编译器要求程序员进行强制类型转换
int age = 10;
short ageDown = (short)age;//强制类型转换不会丢失信息
System.out.println(ageDown);
int width = 130;
byte widthDown = (byte)width;//强制类型转换会丢失信息
System.out.println(widthDown);
输出:
10
-126
float average = 10.5f;
int averageDown = (int)average;
System.out.println(averageDown);
输出:
10
7、String转换成int或者double
int/Integer num = Integer.parseInt(String str);
double/Double num = Double.parseDouble(String str);
8、如何将整数 int 转换成字串 String
int a=9;
1) String s = String.valueOf(a);
//当a为null 时,String.valueOf(a)的值是字符串”null”,
2) String s = a.toString();
//当a为null 时,a.toString()将抛出NullPointerException异常
9、保留两位小数的方法
//方法一:
DecimalFormat df = new DecimalFormat("######.00");
double d1 = 3.23456
df.format(d1);
//#.00 表示两位小数 #.0000四位小数 以此类推...
//方法二:
double d = 3.1415926;
String result = String.format("%.2f",d);
10、字符串类型变量
字符串类型是对象类型,不属于基础类型.赋值的时候属于值传递.在Java语言中,字符串String是不可变(final)的
注意要点:
字符串变量赋值
获取字符串长度
字符串相加
字符串比较
11、引用类型变量
引用类型(reference type)指向对象在内存空间的地址。
String a="This is a Text!";
String b=a;
a和b是不同的两个引用,我们使用了两个定义语句来定义它们. 但它们的值是一样的, 都指向同一个对象 "This is a Text!"。
这种情况不是改变了"This is a Text!" 这一对象的值, 而是改变了它的引用b的值,使之指向了另一个String对象a。
引用传递,也称为传地址。方法调用时,实际参数的引用(地址)被传递给方法中相对应的形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。
12、变量作用域
Java变量从影响范围划分,分为成员变量和局部变量。
成员变量
java类内部定义的变量叫做成员变量,如果没有设定初始值,系统会自动赋值为默认值。作用范围是整个类,成员变量在所在类被实例化后,存在堆内存中。
局部变量
java方法内定义的变量被称为局部变量,局部变量没有默认值,声明变量时必须设定初始值。作用范围从声明开始,直到包含它的块(对应的大括号}
)结束。局部变量在所在方法调用时,存在栈内存中。
方法参数是局部变量,范围涵盖整个方法。
public class Demo {
/**
- a,b 是成员变量,整个方法都可以调用.
*/
public static int a;
public static float b = 3.0f;
public static void main(String args[]) {
/** 在方法中调用成员变量, a为默认值, b为设定值*/
System.out.println(a);
System.out.println(b);
testVar();
/** 这里输出变量m, n,编译代码时,会报错,提示没有定义变量m,n*/
//System.out.println(m);
//System.out.println(n);
}
public static void testVar() {
/**m,n 是成员变量,必须初始化赋值.作用域是在这个方法中. */
int m = 0;
int n = 1;
System.out.println(m);
System.out.println(n);
}
}

