黑马程序员-学习笔记02

时间:2022-12-08 21:25:25
1.计算出十进制46对应的二进制,八进制,十六进制的值。
 二进制
 46/2 = 23 余 0
 23/2 = 11 余 1
 11/2 = 5     1
 5/2  = 2     1
 2/2  = 1     0
 1/2  = 0     1
 二进制的值是 0b101110

 八进制
 46/8 = 5     6
 5/8  = 0     5
 八进制的值是 056

 十六进制
 46/16 = 2    14
 2/16  = 0    2
 十六进制的值是 0x2e


2.进制的练习
 (1)计算出十进制80对应的十六进制和二进制的值
 十六进制
 80/16 = 5 余 0
 5/16  = 0    5
 十六进制的值是 0x50

 二进制
 80/2 = 40    0
 40/2 = 20    0
 20/2 = 10  0
 10/2 = 5  0
 5/2  = 2  1
 2/2  = 1  0
 1/2  = 0  1
 二进制的值是 0b1010000

 (2)计算出075对应的十六进制和二进制的值
 先算出八进制075对应的十进制的值
 75=70 + 5
   =7 * 8^1 +5 * 8^0
   =56 + 5
   =61
   十进制的值是61

   在由十进制计算出十六进制和二进制
   十六进制
   61/16 = 3 余 13
   3/16  = 0    3
   十六进制的值是 0x3d

   二进制
   61/2 = 30 余 1
   30/2 = 15    0
   15/2 = 7    1
   7/2  = 3    1
   3/2  = 1     1
   1/2  = 0     1
   二进制的值是 0b111101


 (3)计算出0xFA对应的十进制、八进制和二进制的值
 十进制
 FA=F * 16^1 +  A*16^0
   =240 + 10
   =250
   十进制的值是 250

   八进制
   250/8 = 31    2
   31/8  = 3     7
   3/8   = 0     3
   八进制的值是 0372

   二进制
   250/2 = 125   0
   125/2 = 62    1
   62/2  = 31    0
   31/2  = 15    1
   15/2  = 7     1
   7/2   = 3     1
   3/2   = 1     1
   1/2   = 0     1
   二进制的值是 0b11111010

 (4)计算出0b10110110的十进制、十六进制、八进制
   十进制
   10110110 = 128 + 32 + 16 + 4 + 2
            = 182
   十进制的值是 182

   十六进制
   182/16 = 11 余 6
   11/16  = 0     11
   16进制的值是 0xb6

   八进制
   182/8  = 22    6
   22/8   = 2     6
   2/8    = 0     2
   八进制的值是 0266



3.什么是变量?变量的定义格式?要使用变量需要注意什么?
  在程序运行过程中会改变的量为变量
  变量的定义格式:数据类型 变量名 = 初始值;
                  数据类型 变量名;
      变量名 = 初始值;
  注意事项:1.同一个作用域中变量名不能重复
           2.使用变量前必须赋值
4.Java中的数据类型分几类?基本数据类型有哪些?
  数据类型分4类,分别是整数
                          byte
        short
        int
        long
                       浮点
           float
        double
        字符
           char
        布尔
           boolean

5.数据类型转换:
 隐式转换:两种数据类型在运算时,会把范围小的自动提升到范围大的在运算。

 强制转换:两种数据类型在运算时,会把范围小的自动提升到范围大的在运算;之后在将值赋予范围小的数据类型。
           格式是: byte b = (byte)(2 + 1);


 面试题:
  第一题:
  byte b1=3,b2=4,b;
  b=b1+b2;
  b=3+4;
  哪句是编译失败的呢?为什么呢?
        b=b1+b2会编译失败,因为定义的b1、b2、b的数据类型都是byte,b1+b2运算时会隐式转换为int数据类型运算,在赋值给byte数据类型会损失精度

  第二题:
  byte  by = 130;有没有问题?有问题如何解决?结果是多少呢?
  有问题,130超过了byte数据类型的范围;
  进行强制转换 byte by = (byte)130;
  结果值是-126

  第三题:
  byte b = 10;
  b++;
  b = b + 1;
  哪句是编译失败的呢?为什么呢?
  b = b +1会编译失败,b +1运算时会隐式转换为int数据类型运算,在赋值给byte数据类型会损失精度
  b++在运算过程中会进行强制转换
6.常见的算术运算符有哪些? + - * / % ++ --
 (1)+运算符的作用有哪些?
    1.作为正号;2.作为加法运算符;3.用于字符连接
 (2)除法和取余的区别?
    除法是整数除以整数得整数的值,余数舍掉
    取余是整数除以整数得余数
 (3)++和--的使用规则?
    符号放在前面时,先运算在赋值
    符号放在后面时,先赋值在运算
    会强制转型

7.常见的赋值运算符有哪些? = += -= *= /=
 (1)+=运算的作用是什么? +=运算符两边的数据相加的值赋予左边
 (2)扩展的赋值运算符有什么特点?
 会强制转型

8. short s = 1; s = s + 1;有没有问题?如果有怎么解决?
    有问题,编译时会报错,损失精度,加上强制转换,s = (short)(s + 1)
   short s = 1; s += 1;有没有问题?如果有怎么解决?
    没问题
 
9.常见的关系运算符有哪些? > < >= <= == !=
  关系运算符的结果有什么特点?
  只有2个值真或假,及 true 或 false

11.分析以下需求,并用代码实现:
 (1)已知一个三位数,请分别获取该三位数上每一位的数值
 (2)例如:123的个位、十位、百位,分别是3、2、1
 (3)打印格式"数字123的个位是 3, 十位是 2, 百位是 1"

   class Demo1 {
 public static void main(String[] args) {
  int a ,b ,c;
  int d = 123;
  a = d / 100 % 10;
  b = d / 10 % 10;
  c = d % 10;
  /*
  System.out.println(a);
  System.out.println(b);
  System.out.println(c);
  */
  System.out.println("数字123的个位是 " + c + ", 十位是 " + b + ", 百位是 " + a);
 }
}


12.看程序说结果,请不要提前运行?
 public class Test1 {
  public static void main(String[] args) {
    int x = 4;
    int y = (--x)+(x--)+(x*10);
    System.out.println("x = " + x + ",y = " + y);
  }
 }


 x = 2
 y = 3 + 3 + 2*10
   = 26