变量
基本数据类型
变量:内存中一块存储区域
变量必须要先声明(定义)然后再使用
- 变量定义格式(变量只能保存一种类型的数据):
数据类型 变量名; - "=":赋值符号
eg int a = 12; - 标识符(起名字):
a)标识符必须以字母或下划线或 $ 符号开始。其余字符可以
是字母、数字、$ 符号和下划线
eg 1ab, !b , bac*1
$ab, a(定义是正确,但是企业开发中,尽量不要去用)
b)标识符只能包含两个特殊字符,即下划线 () 和
美元符号($)。不允许有任何其他特殊字符
c)标识符不能包含空格
eg int a b;
int a,b;
d)区分大小写
e)类名的写明:首字母大写(规范)
"驼峰"写法: HelloWorld
f)见名知意 class Person
int num;
整型
类型
bit
byte
取值范围
byte
8
1
-128~128-1
short
16
2
+-3w左右
int
32
4
+-21亿左右
long
64
8
1十进制
int i = 11;
int j = -12;
2八进制
int i = 08
int j = -12
3 十六进制
int i = 0x05;
int j = -0xffaa;
上下溢出,数值无效
Int I = 0x7fffffff;
i++;
Int j = 0x80000000;
j--;
long num3 = 0x7ffffffffl;
浮点型
类型
bit
byte
取值范围
float
32
4
+-3.40282347e+38F
double
64
8
+-1.7969313486231570e+308
float类型共32位,1位为符号位,指数8位,尾数23位;
float的精度比int小
double类型 11位指数位,52位尾数
Double 比int精确 但是不如long,double范围要远大于long
例3
int a = 0x7fffffff;
int b = 0x7ffffff0;
float fa = a;
float fb = b;
System.out.println(a);
System.out.println(b);
System.out.println(fa);
System.out.println(fb);
double da = a;
double db = b;
System.out.println(a);
System.out.println(b);
System.out.println(fa);
System.out.println(fb);
float i1 = 11.11223D;
float j2 = -17.15f;
double i1 = 11.11223d;
double i2 = 11.11333d;
double j3 = - 17.15555;
字符型
char c1 = 'c';
char c2 = '\u005E';
char c3 = 56;
布尔型
boolean b1 = false
boolean b2 = true
数组
Int i[];//不显示指定长度
int i[] = {1,2,3,4,5,6,7};//静态赋值
int i[] = new int[100];
i[10] = 11;
数组拷贝
System.arraycopy(src,srcPos,dest,destPos,length)
Arrays.copyOf(src,length) (api1.6)
例
import java.util.Arrays;
public class array {
public static void main(String[] args) {
int[] src = {1,2,3,4};
int[] dest = new int[4];
System.arraycopy(src, 0, dest, 0, src.length);
System.out.println(Arrays.toString(dest));
int[] dest2 = Arrays.copyOf(src, src.length);
System.out.println(Arrays.toString(dest2));
}
}
3 java中的进制转换
1)十进制
含义:逢10进1
基数:10
权:10^n, 100000,10000,1000,100,10,1
245678(10) = 2100000+410000+51000+6100
+710+81
= 2105+4*104+5103+6*102
+7101+8*100
2)二进制
含义:逢2进1
基数:2
权:2^n, 256,128,64,32,16,8,4,2,1
10000001(2)= 127+1*20 = 128+1=129(10)
十进制数转换为二进制数
369(10)=101110001(2)
369 256,128,64,32,16,8,4,2,1
1 0 1 1 1 0 0 0 1
113 113 49 17 1 1 1 1 0
做一个表格(0-15)的二进制
(10) (2)
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
3)补码:
弥补计算机中进制的不足(没有办法表示负数)
补码可以表示负数(有位数的限制)
a)四位补码
-8~7-------->四位补码来表示
规则: a)将高位为1的数,作为负数
b)计算的时候,超过4位,超过的部分自动舍弃
(10) (2)
-8 1000
-7 1001
-6 1010
-5 1011
-4 1100
-3 1101
-2 1110
-1 1111
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
eg: -3+-1
1101
- 1111
1111
1100
-1*-1
1111
1111
1111
1111
1111
1111
21
0001
-7+(-8)
1001
1000
0001
规律:补码是有位数限制的,4位补码,不管如何运算,最后的结果一定
不能超过-8~7,一旦超过,错误
b) 8位补码
4位补码 8位补码(正数补0,负数补1)
-128 1000 0000
8 0
min 0x80
(10) (2)
-8 1000 1111 1000
-7 1001 1111 1001
-6 1010 1111 1010
-5 1011 1111 1011
-4 1100 1111 1100
-3 1101 1111 1101
-2 1110 1111 1110
-1 1111 1111 1111
0 0000 0000 0000
1 0001 0000 0001
2 0010 0000 0010
3 0011 0000 0011
4 0100 0000 0100
5 0101 0000 0101
6 0110 0000 0110
7 0111 0000 0111
8 0000 1000
9 0000 1001
10 0000 1010
...
127 0111 1111
max 7 f
0x7f
32位
-21亿 10000000 00000000 00000000 00000000
(min)
...
(10) (2)
-8 1000 11111111 11111111 11111111 11111000
-7 1001 11111111 11111111 11111111 11111001
-6 1010 11111111 11111111 11111111 11111010
-5 1011 11111111 11111111 11111111 11111011
-4 1100 11111111 11111111 11111111 11111100
-3 1101 11111111 11111111 11111111 11111101
-2 1110 11111111 11111111 11111111 11111110
-1 1111 11111111 11111111 11111111 11111111 1111
0 0000 00000000 00000000 00000000 00000000
1 0001 00000000 00000000 00000000 00000001
2 0010 00000000 00000000 00000000 00000010
3 0011 00000000 00000000 00000000 00000011
4 0100 00000000 00000000 00000000 00000100
5 0101 00000000 00000000 00000000 00000101
6 0110 00000000 00000000 00000000 00000110
7 0111 00000000 00000000 00000000 00000111
...
21亿 01111111 11111111 11111111 11111111
7 f f f f f f f
max 7fffffff
d) 补码的取值范围
4位补码: -8~7
8位补码: -128~127
16位补码:-32768~32767
32位补码:-21亿~21亿 int
64位补码: long
补码规律总结:
补码是有范围的数(范围就是位数)
补码是有符号(高位是"0",正数,高位是"1",负数)
补码运算一定要当心溢出问题,太大,向上溢出,太小了,向下溢出
e) 求负数的补码
~n + 1 = -n
-2的补码
1) -2---->2---->0010
2) 取反-------->1101
3) 1101+0001--->1110
4 16进制
目的:计算机内部运行的时候,全是二进制,计算全是补码运算,
但是对于我们来说,用二进制补码表示的数,太难读了,16进制
用来简化二进制
规律:逢16进一
基数:16
权: 16^n ,256 , 16 , 1
16进制数字: 0 1 2 3 4 5 6 7 8 9 a b c d e f
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(10) (2) (16)
0 0000 0000 0
1 0000 0001 1
2 0000 0010 2
3 0000 0011 3
4 0000 0100 4
5 0000 0101 5
6 0000 0110 6
7 0000 0111 7
8 0000 1000 8
9 0000 1001 9
10 0000 1010 a
11 0000 1011 b
12 0000 1100 c
13 0000 1101 d
14 0000 1110 e
15 0000 1111 f
16 0001 0000 10
17 0001 0001 11
18 0001 0010 12
19 0001 0011 13
整形精度
Float int double long
范围
Int long float double
数据类型转换
Char ->int -> long -> float -> double正方向
Byte -> short -> int -> long -> float -> double 反方向