常量:
概述:在程序的运行过程中,其值不发生改变的量。
字面值常量:
整数常量:
小数常量:
字符串常量: ""括起来的内容
字符常量: ''括起来的内容,只能是一个,不能为空 ''
布尔常量: true,false。
空常量: null
自定义常量:(面向对象的时候,数组)
进制:
概述:逢几进一,就是几进制。
特点:进制越大,表现形式越短。
1byte(字节) = 8bit(位)
1kb = 1024byte
计算机对数据进行存储和运算的最小单位是:字节。
计算机能够直接识别的进制是哪一种:二进制数据。
二进制:以0b开头,0,1组成。 (JDK1.7以后支持了二进制的写法)
八进制:以0开头,0-7组成。
十进制: 0-9组成。
十六进制:以0x开头,0-9,A-F组成。
进制的转换:
其他进制到十进制的转换:
123456
权:543210
公式: 把各位的 系数*基数的权次幂 相加即可。 (123456)
系数:就是每一位的数据。(1,2,3,4,5,6)
基数:几进制,基数就是几。
权:从右往左,以0开始编号,编号就是对应位置的权。
十进制到其他进制的转换:
除基倒取余。
大白话理解:用数据除以基数,直到商为0,然后把余数倒着写。
调出计算机的DOS命令:calc
0b0110 转成十进制:6
20 转成二进制:10100
进制的快速转换法:(掌握)
1 1 1 1 1 1 1 1 01100100
128 64 32 16 8 4 2 1
二进制到八进制: 从后往前,三位一组合(不够用0补齐),计算出十进制的值,然后拼接即可。
001 101 010
二进制到十六进制:从后往前,四位一组合,计算出十进制的值,然后拼接即可。
0110 1010
有符号的数据的表示形式:
-20的二进制?
原码反码补码:都是二进制的数据。最高位是符号位(1代表负数,0代表正数),其他位是数值位。
计算机运算(存储)数据都是以数据的 补码形式 来运算(存储)的。
正数:
原反补都是一样的。
负数:
原码:
反码:在原码的基础上,符号位不变,其他数值位0变1,1变0.
补码:在反码的基础上,末位+1.
A:已知原码求补码: 0b10110100 (原码)
11001011 (反码)
11001100
B:已知补码求原码: 0b11101110
0b11101101(反码)
0b10010010(原码)
中午作业:
1、100转成二进制,八进制,十六进制。
01100100 144 64
2、完成如下需求:
A:已知原码求补码: 0b10011101 (原码)
11100010 (反码)
11100011(补码)11100011(补码)
B:已知补码求原码: 0b10101110 (补码)
10101101(反码)
11010010(原码)
变量:
概述:在程序的运行过程中,其值在 一定范围内 可以发生改变的量。
格式:
格式1:
数据类型 变量名 = 值;
byte b = 100;
格式2:
数据类型 变量名;
变量名 = 值;
数据类型:
基本数据类型(四类八种)
整型:
byte 1个字节 -128-127
short 2个字节
int 4个字节
long 8个字节
浮点型:
float 4个字节
double 8个字节
布尔型:
boolean 值只有true和false 1个字节
补充一句:但是理论上来讲,八分之一个字节就够了,因为它的值只有两个,
但是计算机最底层的存储单位是字节,所以这里把它当做一个字节来算。
字符型:
char 2个字节
引用数据类型:自定义类,接口,数组,String
数据类型注意事项:
1、整型默认的是int类型,浮点型默认的是double类型。
2、如果定义long类型的变量,在变量值后边加L或者(小L)。
如果定义float类型的变量,在变量值后边加F或者(小f)。
使用变量的注意事项:
1、作用域。
同一对大括号内,相同的变量名不能重复定义。
2、局部变量使用前,必须先初始化(定义,赋值)。
局部变量使用前,必须先定义,在赋值,然后才能使用。
3、可以定义多个同类型的变量
int b,c,d,e,f;
数据类型转换:
默认转换规则:
取值范围小的数据类型 与 取值范围大的数据类型 进行运算,会先将小的数据类型提升为大的,再运算
byte,short,char --> int --> long --> float --> double boolean类型不参与运算。
为什么long的范围比float的范围要小?
因为他们的底层存储结构不同。
隐式类型转换:
把小的赋值给大的。
格式:和定义变量的格式是一致的。
double d = 10;
强制类型转换:
把大的给小的。
格式: (转换后的数据类型)要转换的值或者变量名;
int a = (int)10.0;
double d = 20.3;
int b = (int)d;
byte b = (byte)130; //-126
/*
第一步:求出130的二进制形式。(原码00000000 00000000 00000000 10000010)
第二步:求出130的反码。(反码00000000 00000000 00000000 10000010)
第三部:求出130的补码。(补码00000000 00000000 00000000 10000010)
第四步:对130的补码进行截取,保留最后一个字节,得到一个新的补码(10000010)。
第五步:根据得到的新的补码,计算出反码。(10000001)
第六步:根据第五步得到的反码,计算出原码(11111110),然后转成十进制。
*/
System.out.println(b);
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2; //如果是变量相加,会先提升数据类型,然后在运算。
byte b4 = 10 + 118; //如果是常量相加,会直接运算,然后看得到的结果是否在左边的数据类型所能描述的范围内,如果在,就不报错,如果不在就报错,因为Java有常量优化机制。
字符和字符串参与运算:
字符串参与运算,会得到一个新的字符串。
实例: sop(5 + 5 + "hello" + 5 + 5); //"10hello55"
字符:0-65535(\u0000 - \uFFFF)
ASCII码表:
'a' 97
'A' 65
'0' 48
字符能存中文吗?
可以,因为Java用的Unicode编码,Unicode编码规定占两个字节,一个中文也是两个字节,所以可以。
运算符:
算术运算符
+,-,*,/,%,++,--
注意事项:
1、+有三个作用:表示加法,表示正数,可用作字符串的连接符
2、整数和整数相除,得到的结果肯定是整数,如果想得到小数,把其中任意一个数据转成浮点型即可。
10/3 = 3; 10.0/3 10/3.0 10.0/3.0
3、%取余操作得到的结果只跟左边的数据的符号有关。
3%5 5%5 10%3
++,--的用法:(此处以++为例)
单独使用:
前加和后加没有区别,都是自身加1.
参与运算:
前加:先自身+1,然后用得到的新值再参与运算。
后加:先以原值来运算,完了以后再自身+1.
注意:++,--隐含了 强制类型转换。
练习题:
1、
int a = 10;
int b = 10;
int c = 10;
a = b++; //a=10,b=11,c=10
c = --a; //a=9,b=11,c=9
b = ++a; //a=10,b=10,c=9
a = c--; //a=9,b=10,c=8
2、
int x = 4;
int y = (x++) + (++x) + (x*10)
// y = 4 + 6 + (6*10)
//x的值的变化:5 6 6
3、
byte b = 10;
b++;
b = b + 1;
int x = 4;
int a = 3;
int b = 5;
int y = x++ + ++x + --a + a*b++ +..
问y=?
赋值运算符
比较(关系)运算符
逻辑运算符
位运算符
三元(目)运算符
|
|