← 回到文章列表

Hello Java Day02

Java 语言基础 Day02 ==================== 变量, Java的变量存储(二进制) Java的变量类型 数据类型转换 1. Java 变量 1) 变量就是自然语言中的代词 Person he; int age = 15; //age= 00000000…

Java 语言基础 Day02
====================
变量,
Java的变量存储(二进制)
Java的变量类型
数据类型转换

  1. Java 变量\
  1. 变量就是自然语言中的代词
    Person he; int age = 15;
    //age= 00000000 00000000 00000000 00001111
    System.out.println(age);//15\
  2. Java 中的变量, Java是强类型语言,
    A 变量必须声明,并且初始化以后使用
    B 变量必须有明确的类型
    C 变量不能重复定义\
  3. 变量的作用域
    a 在声明的地方开始,到块结束为止
    b 离开变量的作用域结束,变量将回收。
  1. 进制转换基础\
  1. 十进制
    逢10进1
    基数: 10
    权: 10^n, 10000 1000 100 10 1
    23678(10) = 2*10000+3*1000+6*100+7*10+8*1
    = 2*10^4 + 3*10^3 + 6*10^2 + 7*10^1 + 8*10^0
    = 23679

  2. 二进制
    逢2进1
    基数: 2
    权: 2^n, 128 64 32 16 8 4 2 1
    01000001(2) = 1*64 + 1*1
    = 65(10)\

  3. 补码基础
    -128 10000000 11111111 11111111 11111111 10000000
    10 2进制 … …
    8421 11110111 11111111 11111111 11111111 11110111
    -8 1000 11111000 11111111 11111111 11111111 11111000
    -7 1001 11111001 11111111 11111111 11111111 11111001
    -6 1010 11111010 11111111 11111111 11111111 11111010
    -5 1011 11111011 11111111 11111111 11111111 11111011
    -4 1100 11111100 11111111 11111111 11111111 11111100
    -3 1101 11111101 11111111 11111111 11111111 11111101
    -2 1110 11111110 11111111 11111111 11111111 11111110
    -1 1111 11111111 11111111 11111111 11111111 11111111
    0 0000 00000000 00000000 00000000 00000000 00000000
    1 0001 00000001 00000000 00000000 00000000 00000001
    2 0010 00000010 00000000 00000000 00000000 00000010
    3 0011 00000011 00000000 00000000 00000000 00000011
    4 0100 00000100 00000000 00000000 00000000 00000100
    5 0101 00000101 00000000 00000000 00000000 00000101
    6 0110 00000110 00000000 00000000 00000000 00000110
    7 0111 00000111 00000000 00000000 00000000 00000111
    00001000 00000000 00000000 00000000 00001000
    …. …
    127 01111111 00000000 00000000 00000000 01111111
    128 ——– 00000000 00000000 00000000 10000000

补码运算:
-1 1111
-1 1111
*
———-
1111
1111
1111
1111
101010
———–
0001

  1. A Java 内部只有二进制补码
    B Java 内部采用补码运算, 自动发送上溢出和下溢出
    C Java内部没有10进制! 但是Java尽量按照人类习惯输入输出
    D 补码的负数 最高位是 1, 也称作符号位\
  2. 16进制, 是2进制的简写, 方便专业人员书写2进制数据
    16进制
    逢16进1
    基数: 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

41(16) = 4*16 + 1*1
= 65(10)
= 0100 0001(2)
8421 8421
4 1 (16)

128 64 32 16 8 4 2 1
0 1 0 0 0 0 0 1
练习:转换以下十进制为二进制 192(10) 137(10) 145(10)
192(10) = 1100 0000 (2)
c 0 (16)
-8(10) = fffffff8(16)

  1. Java 数据类型: 分为引用类型和基本数据类型\
  1. 基本数据类型: 8种
    byte, short, int, long
    float, double
    char
    boolean\
  2. 整数类型 byte, short, int, long, 都是有符号(补码)整数
    byte 8位补码 最大值 0x7f 127 最小值 0x80 -128
    short 16位有符号数 0x7fff 32767 0x8000 -32768
    int 32位 0x7fffffff 2G-1 2^31-1 21亿 0x80000000 -2G
    long 64位 …. 0x7fffffffffffffff
    整数字面量(直接量) 默认是int类型, 如果不超出范围, 可以给
    小类型直接赋值.
    使用整数类型(byte, short, int) 要注意取值范围, 超范围运算
    java 底层byte,short 按照32位计算

long 类型的字面量使用"L",“l” 后缀

  1. 浮点数, 小数 (不必掌握 浮点数的存储方式)
    浮点数原理: 10进制浮点数(科学计数法)原理\
  1. = 2.356189 * 10^6
    概念: 尾数: 2.356189
    指数: 6
    基数: 10
    pi = 3.14
    3.1415926535897932384626433832

二进制浮点数:
101001010101. = 1.01001010101 * 2^1011
概念: 尾数: 1.01001010101
指数: 1011
基数: 2

float: 32位 其中: 1位符号位, 8位指数, 23位尾数
精度: 23 位
int max = 01111111 11111111 11111111 11111111
float f = 1.111111 11111111 11111111 1 * 2^00011110

double: 64位 其中: 1位符号位, 11位指数, 52位尾数

浮点数的字面量: 默认是double, D d 后缀是double, f F 是float

  1. 字符类型 char, 字符是壹个16位无符号整数, 是壹个二进制数
    数值是壹个字符的unicode编码值.
    unicode 编码: 是全球范围内的编码方法, 编制了英文, 中,日,韩
    阿拉伯, 希伯来, ….. 8万+ 字符

中 : 20013
A : 65

其中英文部分与ASCII 兼容, 英文字符和数字是连续编码的.
ASCII: 0128
Java char 的范围 0
65535 不能表示全部unicode 但是可以表示
unicode只能够最常用的部分

*最小值:0, 最大值:65535 = 2^16-1
*字符字面量使用单引号为定界符号:‘中’
字面量也是整数常量!
特殊字符采用转义字符表示:
如: ’n’ newLine 换行
‘r’ return 回车
’t’ tab
‘’
‘b’ backspace
‘f’ pagebreak
‘’’
‘"’ ‘u4e2d’

char c = ‘’;

‘c’ -> ‘C’
‘a’-‘A’ = x - X
X = x - (‘a’-‘A’);

  1. boolean 布尔类型 表达: 真(true)/假(false)
    建议使用长变量名定义变量
    boolean started = true;
    boolean isMan = true;
    isMan = false;
    boolean used = true;//二手的
    if(used){
    System.out.println(“打八折”);
    }
    if(isMan){
    //…
    }
    不建议 定义没有意义的变量
    boolean u = true;//u = you
    if(u){
    //….
    }
    boolean flag = false;

if(flag){
System.out.println(“打八折”);
}

  1. 数据类型转换
    char ->
    byte -> short -> int -> long -> float -> double
  1. 自动类型转换,正方向,小类型到大类型的转换会自动完成
    符号位会自动扩展, 负数补1, 正数补0, 保证补码数值不变
    注意, 整数到浮点数转换会损失精确度
    自动类型转换也叫"隐式类型转换", 是自动发生的, 壹般不需要处理

int i = -1;
long l = i;

  1. 强制类型转换(显示类型转换), 需求明确处理, 是按照反方向,进行
    的转换, 这种转换会溢出, 或者损失精度. 要注意数据的范围
    int i = 128+256;// 00000000 00000000 00000001 10000000
    byte b = (byte)i;//-128

long l=0xf80000000L;
int c = (int)l;//负数

l = 8;
int d = (int)l;

float pi = (float)3.1415926535;//损失精度

char c = ‘0’;
char x = (char)(c+2);

作业: 1 复习并且完成 全部 课堂演示代码, 添加适当的
输出语句, 研究输出结果, 添加适当的注释.
2 尝试 计算 10个以上 255 以内的整数转换为 2进制,
16进制,相互转换. 并且编程验证计算结果

提示: System.out.println(Integer.toHexString(234));

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

4 (选做)尝试实现 day02.png 中的案例, 在周末提交结果

5 将人名字符的HEX编码输出, 手工转换为二进制, 并且验证结果

提示: 可以使用Scanner输入用户数据

预习: Java运算符, 流程控制语句. 参考Day03.txt

[媒体不可用]
课堂提纲教案

在这里找找

输入关键词,找一篇过去的记录。