20天jvava(2)

1. 变量
1.1 变量用于表示变化的数据
1.2 Java是强类型语言,声明变量时必须指定明确的数据类型
1.3 变量必须声明,并且初始化以后使用(变量初始化是指变量定义后,首次赋初值的过程)
1.4 变量不能重复定义
1.5 变量的作用域从变量声明的地方开始,到变量所在的块结束为止。不能使用作用域之外的变量
int a; //定义变量a
a=1; //初始化变量a
a=a+1; //使用变量a
int b = a; //定义变量b,初始化变量b,使用变量a

2. 二进制
2.1 内存只能存放二进制形式的数据,如0001 1001表示8位的二进制数据流,每一位称为1个比特(bit),每8位称为1个字节(byte)
int i = 15; 15 -> 00000000 00000000 00000000 00001111
char c = 'A'; 'A'-> 00000000 01000001
计算机默认接受10进制数据,自动转换为二进制数据

2.2 二进制转换为十进制:
123 = 1*100 + 2*10 + 3*1
= 1×10^2 + 2×10^1 + 3×10^0
基数: 10 权: 基数^n
基数 : 2 权: 128 64 32 16 8 4 2 1
例如:01000001 = 1*64 + 1*1 = 65

方法Integer.parsetInt(String s,int radix)返回指定进制字符串的十进制整数


十进制转换为二进制:
128 64 32 16 8 4 2 1
65 = 0 1 0 0 0 0 0 1
68 = 0 1 0 0 0 1 0 0

方法Integer.toBinaryString(int i)用于显示整数的二进制形式
方法Integer.toString(int i,int radix)返回一个整数对应的指定进制的字符串

2.3 十六进制是二进制的简写,以方便书写和记忆,每4位二进制对应1个16进制数字
十六进制的基数是16,数字:0 1 2 3 4 5 6 7 8 9 a b c d e f
1111 1111 -> 0xff
0x41 = 4 * 16 +1 = 65(10)
0x4e2d = 0100 1110 0010 1101
方法Integer.toHexString(int i)用于显示整数的二进制形式

练习: 243(10)-> 1111 0011(2) -> 0xf3(16)
256 128 64 32 16 8 4 2 1 15*16 + 3
1 1 1 1 0 0 1 1



我们也已经学会如何将一个10进制数如何转换为二进制数。
不过,我们仍然没有学习一个负数如何用二进制表达。
比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110
3、得补码: 11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF



3. 数据类型
3.1 Java的数据类型分为基本类型和引用类型。
(1)基本类型代表简单的数据类型,比如整数和字符
(2)引用类型能够表示任意一种复杂的数据结构,
如Person、Date。
(3)引用类型使用new关键字初始化,如Date d = new Date();
3.2 基本数据类型有8种:byte short int long
float double char boolean
3.3 基本数据类型:

整数类型:整数都是有符号整数(最高位是符号位,0表示整数,1表示负数)
byte 1个字节(8位) -128 ~ 127
short 2个字节(16位) -32768 ~ 32767
int 4个字节(32位) -2^31 ~ 2^31-1 21亿+
long 8个字节(64位) -2^63 ~ 2^63-1
直接量-字面量: 直接给出的常量值如: int a=100;
(1) 整数的直接量的类型默认是int类型
(2) 以L,l为结尾的字面量是long类型

浮点类型:表示小数
float 4个字节(32位) 单精度浮点数,使用float进行数学计算时会产生误差
double 8个字节(64位) 双精度浮点数,double比float精确
浮点类型字面量后缀: d/D f/F,默认的浮点数字面量是double类型

字符类型:采用unicode编码,是一种跨平台的字符编码
字符类型的值对应字符的编码,所有字符都是16位无符号整数:
char 2个字节(16位) 0 ~ 65535=2^16-1
字符字面量使用单引号为定界符号:'中',字符类型字面量也是整数常量!
'A' -> 0x0041 '中' -> 0x4e2d
在编码中 '0'~'9' , 'a'~'z', 'A'~'Z'都是连续编码的!
特殊字符采用转义字符表示: '\n' '\r' '\t' '\\' '\'' '\"' '\u4e2d'

布尔类型: boolean,表示真假
字面量: true false

4. 数据类型转换:
4.1 自动类型转换(隐式类型转换)
从小类型到大类型, 自动完成
例 如: int n = 'A';
long l = 'A';
char ->
byte -> short -> int -> long -> float -> double

4.2 强制类型转换, 从大类型到小类型需要强制转换
强制类型转换有风险, 会造成精度损失或者溢出

long l = 1024L*1024*1024*4; //0x100000000
int i = (int)l;//0

double pi = 3.1415926535897932384626;
float f = (float)pi;

5. Java中的方法
(1) 方法就是函数: z=f(x,y)=3x+6y;
(2) 方法的语法
(修饰词)(返回值类型)(方法名)(参数列表){
//方法体
}
(3) 如果方法有返回值,方法体需要有return语句, 并返回和返回值类型兼容的数据
(4) 方法的参数和方法内部的变量都是局部变量,这些变量作用域只在方法内部!
(5) 实参: 方法调用传递的参数,实参的值在调用时传递给形参
形参: 方法的参数定义,是临时变量.


作业: 1 复习并且完成全部课堂演示代码, 添加适当的输出语句, 研究输出结果, 添加适当的注释.

2 尝试 计算 10个以上 255 以内的整数2进制、16进制之间的相互转换. 并且编程验证计算结果

3 定义方法: 参数是一个整数类型, 没有返回值,
在方法中输出这个整数的10进制、2进制 、16进制字符串

4.定义一个方法用于计算一个函数,数学函数为y=f(x)=2*x*x+5*x+1
在主方法中调用这个方法,并测试函数:
输入:1 输出:8
输入:2 输出:19
提示:在控制台输入信息使用类java.util.Scanner


预习: Java运算符, 流程控制语句. 参考day03.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值