数据类型和变量定义
- 基本数据类型
- 数值
- 整数 byte short int long
- 浮点 float double
- 字符 char
- 布尔 boolean
- 数值
- 引用数据类型
- 类class
- 接口interface
- 数组array
各个数值类型占用的空间
数据类型 | 说明 | 字节 |
---|---|---|
byte | 字节 | 1 |
short | 短整形 | 2 |
int | 整形 | 4 |
long | 长整形 | 4 |
float | 单精度浮点 | 4 |
double | 双精度浮点 | 8 |
boolean | 布尔型 | 1 |
Java中表示数字的方法:
- 十进制
- 八进制
- 0开头,包含0-7
- 十六进制
- 0X或者0x开头,包含0-9,A-F或者a-f
声明变量的格式:
- int n; 声明一个n,类型是整形
- long count; 声明一个count,类型是长整形
浮点型变量默认表示double类型,可在其末尾加d或者D表示
- 123.43d或者123.43D
如果表示单精度浮点类型:123.4f,123.3F
public class FloatDemo {
public static void main(String[] args) {
//定义一个单精度浮点变量,存放1234.345
float f = 1234.3f;
//定义双精度表示1234.456
double d = 1234.345d;
System.out.println("f=" + f);
System.out.println("d=" + d);
}
}
变量的作用范围:
- 类级别
- 对象实例级别
- 方法级别
- 局部变量(定义在方法内)
- 块级别
内存分区域:
- 栈
- 堆
- 方法中定义的变量是在栈中储存的
- 常量池
定义字符类型的变量:
字符类型的变量是单引号引起来的单个字符
‘a’ ‘b’ ‘$’ …
char a = ‘a’
char a = 65; 表示a = ‘A’
ASCII码可用来表示字符
- 7位二进制数字组合 – 标准ASCII
- 8位二进制数字组合 – 扩展ASCII
char类型是用2字节表示16位 0-65535<无负数>如果使用数字表示字符,那么不能
超出这个范围,否则需要使用强制类型转换{转换会引起数据的丢失}
public class VarDemo {
public static void main(String[] args) {
//定义两个整形变量<相同数据类型的>
int x = 0, y = 0;
System.out.println("x=" + x);
System.out.println("y=" + y);
//关于换行
System.out.print(x + " " + y + '\n');
// System.out.println();//本身携带换行功能
System.out.print(x + "," + y);
//定义汉字字符
char cn = '哈';
System.out.println(cn);
//可以使用中文作为变量名,当时编码问题不建议使用
//用可科学计数法表示浮点类型的数字
double d = 1.23E5d; // 代表1.23 x 10的5次方
float f = 1.23e5f;
double d1 = .2; //表示的0.3
System.out.println("d=" + d);
System.out.println("f=" + f);
System.out.println("d1=" + d1);
}
}
Unicode编码
char c = ‘\u005d’; 在值(十六进制数)的前面加上\u
来表示
public class UnicodeDemo {
public static void main(String[] args) {
char a = '\u005d';
System.out.println("a=" + a);
}
}
布尔类型的字面值 字面值<常量的一种>
- true
- false
在Java中布尔类型不能是0 or 1
定义方式: boolean b = true;
字符串的字面值
本身不属于基本数据类型,表示方式是用双引号引起来的0or多个字符.定义
方式:String a = “”;
public class StringDemo {
public static void main(String[] args) {
//定义字符串类型
String s1 = "";
System.out.println("s1=" + s1);
String s2 = "hello";
System.out.println("s2=" + s2);
String s3 = "\u005d\u005f";
System.out.println("s3=" + s3);
//定义一个包含空格的字符串
String s4 = "Hello Word!";
System.out.println("s4="+s4);
}
}
常见的转义字符:
转义字符 | 描述 |
---|---|
\uxxxx | 四位十六进制数所表示的字符 |
\’ | 单引号字符 |
\" | 双引号字符 |
\\ | 反斜杠字符 |
\r | 回车 |
\n | 换行 |
\t | 横向跳格 |
\b | 发\退格 |
数据类型的转换
- 自动类型转换
- 强制类型转换
自动类型的转换:
隐式转换,小范围的数据可以转换为大范围的数据
byte -> short -> int -> long
char -> int
int -> double
int -> float<可能产生数据丢失>
long -> float<可能产生数据丢失>
long -> double<可能产生数据丢失>
float -> double
按照箭头方向的转换都是自动(隐式)转换,如果反方向转换就是强制转换
强制类型的转换
double d = 123.4d;
float f = (float)d;
强制转换就是将转换后的类型在被转换的变量前用()括起来
public class TypeExchange {
public static void main(String[] args) {
//char类型和int类型之间的转换
char c = (char)65536;
int n;
n = c; // 隐式转换 char->int
c = (char) n; // int->char 强制类型的转换
//整形浮点性之间的转换
int x = 100;
long y = x; //int->long隐式转换
x = (int)y; //long->int强制类型转换
float f = 1000000000000L;//log->float隐式转换
System.out.println("f="+f);
float f1 = 10000039484L; //会发生数据丢失
System.out.println("f1="+f1);
}
}
变量和常量
变量和常量的定义方式是不同的
int n = 100;//定义n为int变量
final int M = 1000;//定义m为int常量
变量定义之后是可以通过赋值等方式更改的,但是常量定义
之后就不可以更改.
注意:一般常量使用全大写表示,多个单词的时候中间使用下划线连接
public class FinalDemo {
public static void main(String[] args) {
//
int m = 5;
final int N = 6;
final double PI = 3.14;
final int MIN_VALUE = 0;
m = 10;
}
}