java 第二天笔记

====================
1. Java 变量
 1) 变量就是自然语言中的代词
   Person he; int age = 15;
   //age= 00000000 00000000 00000000 00001111
   System.out.println(age);//15
 2) Java 中的变量, Java是强类型语言,
   A 变量必须声明,并且初始化以后使用 int i=0;
   B 变量必须有明确的类型
   C 变量不能重复定义
 3) 变量的作用域
   a 在声明的地方开始,到块结束为止
   b 离开变量的作用域结束,变量将回收。

2. 进制转换基础
 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
  补码运算:
  -1  1111
  -1  1111
 *
 ----------
      1111
     1111
    1111
   1111
   1010101
 -----------
      0001
 
  4) A Java 内部只有二进制补码
     B Java 内部采用补码运算, 自动发送上溢出和下溢出
     C Java内部没有10进制! 但是Java尽量按照人类习惯输入输出
     D 补码的负数 最高位是 1, 也称作符号位
  5) 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)
 进制总结:
    计算机内存只有 二进制补码
    默认输出, 按照人习惯输出10机制结果
    16进制是, 二进制的简写, 16进制本质就是2进制
    16进制存在的价值: 方便书写2进制!
             
3. 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位 ....
  整数字面量(直接量) 默认是int类型, 如果不超出范围, 可以给
  小类型直接赋值.
  使用整数类型(byte, short, int) 要注意取值范围, 超范围运算
  java 底层byte,short 按照32位计算
 
  long 类型的字面量使用"L","l" 后缀
 
 3) 浮点数, 小数 (不必掌握 浮点数的存储方式)
  浮点数原理: 10进制浮点数(科学计数法)原理
    2356189. = 2.356189 * 10^6
  概念: 尾数: 2.356189
       指数: 6
       基数: 10
  pi = 3.14
       3.1415926535897932384626433
 
      
  二进制浮点数:
    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
 
 4) 字符类型 char, 字符是一个16位无符号整数, 是一个二进制数
   数值是一个字符的unicode编码值.
   unicode 编码: 是全球范围内的编码方法, 编制了英文, 中,日,韩
   阿拉伯, 希伯来, ..... 8万+ 字符
   其中英文部分与ASCII 兼容, 英文字符和数字是连续编码的.
   ASCII: 0~128
   Java char 的范围 0~65535 不能表示全部unicode 但是可以表示
   unicode只能够最常用的部分
  
   *最小值:0, 最大值:65535 = 2^16-1
   *字符字面量使用单引号为定界符号:'中' '0'->0  '4'-'0'->4
     字面量也是整数常量!                         52  48  
     特殊字符采用转义字符表示:
     如: '\n' '\t' '\\' '\b' '\r'
        '\'' '\"'  '\u4e2d'
  
     char c = '\\';
    
     'X' - 'A' = N
     'x' - 'a' = N
     X  = 'c' - 'a' + 'A'
 
  5) boolean 布尔类型 表达: 真(true)/假(false)
   建议使用长变量名定义变量
   boolean started = true;
   boolean isMan = true;
   isMan = false;
   boolean used = true;//二手的
   if(used){
     System.out.println("打八折");
   }
   不建议 定义没有意义的变量
   boolean u = true;//u = you
   boolean flag = false;
  
   if(flag){
     System.out.println("打八折");
   } 
 
4. 数据类型转换
           char ->
   byte -> short -> int -> long -> float -> double
   
 1) 自动类型转换,正方向,小类型到大类型的转换会自动完成
   符号位会自动扩展, 负数补1, 正数补0, 保证补码数值不变
   注意, 整数到浮点数转换会损失精确度
   自动类型转换也叫"隐式类型转换", 是自动发生的, 一般不需要处理
 
   int i = -1;
   long l = i;
 
 2) 强制类型转换(显示类型转换), 需求明确处理, 是按照反方向,进行
 的转换, 这种转换会溢出, 或者损失精度. 要注意数据的范围
 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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值