java_day2_常量,变量,数据类型,运算符

打印 上一主题 下一主题

主题 665|帖子 665|积分 1995

一、常量
  1. 常量:在Java程序运行过程中其值不能发生改变的量
  2. 分类:
  3.     1、字面值常量:            
  4.             整数常量 表示所有的整数,包括负数  10  -8
  5.             小数常量 表示所有的小数 1.23  -3.14
  6.             布尔常量 true  false
  7.             空常量 null
  8.             字符常量 表示由单引号括起来的单个字符 'a' '刘'
  9.     2、自定义常量
  10. 常见的单位转换:
  11.     1byte = 8bit
  12.     1kb = 1024byte
  13.     1mb = 1024kb
  14.     1gb = 1024mb
  15.     1tb = 1024gb
  16.     1pb = 1024tb
  17. java针对整数常量,提供4种表现形式:
  18.     二进制:由0,1构成,逢2进1,由0b开头
  19.     八进制:由0,1,2,3,4,5,6,7构成,逢8进1,由0开头
  20.     十进制:由0,1,2,3,4,5,6,7,8,9构成,逢10进1,默认就是10进制
  21.     十六进制:由0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f构成,逢16进1,由0x开头
  22. 进制之间的转换
  23.     1、其他进制转10进制 规律:每一位上的系数乘上自身进制的幂次方之和
  24.         12345【10进制】 -> 【10进制】?12345
  25.         12345 = 10000 + 2000 + 300 +40 + 5
  26.               = 1*10^4 + 2*10^3 + 3*10^2 + 4*10^1 + 5*10^0
  27.               = 10000 + 2000 + 300 + 40 + 5
  28.               = 12345
  29.     2、10进制转其它进制 规律:除基取余,直到商为0,余数反转
  30.     3、10进制与2进制之间的快速转换:8421码
  31.        1    1   1   1   1   1   1   1
  32.       128  64   32  16  8   4   2   1
  33.    
  34.       10110011 -> 128 + 32 + 16 + 2 + 1
  35.     4、其他进制到其他进制 如:2进制到8进制
  36.         方案1、先转10进制,再转8进制
  37.             10011-> 16 + 2 + 1 = 19
  38.             19/8= 2...3
  39.             2/8 = 0...2
  40.         方案2:先转2进制,若转8进制,每3位一组合,转10进制拼接;若转16进制,每4位一组合,转10进制拼接
  41.             举例:10011【2进制】 -> 【8进制】023
  42.                     010-> 2   011-> 3
  43.                  10011【2进制】 -> 【16进制】0x13
  44.                     0001-> 1   0011-> 3
  45.     举例:-7 + 3 = -4
  46.     java针对2进制而言,负数和正数的表现形式不一样的,并且在计算机底层计算过程中,数据都是采用补码进行计算的
  47.     要想知道一个数值的补码,就必须先知道该数值的反码,要想知道一个数值的反码,就必须先知道该数值的原码。
  48.         原码:
  49.             正数的原码与二进制值保持一致,最高位为0;
  50.             负数的原码数值位与正数一致,最高位是1。
  51.             举例:
  52.                            符号位   数值位
  53.                     -7的原码:1     0000111
  54.                     3的原码: 0     0000011
  55.         反码:
  56.             正数的反码与原码保持一致;
  57.             负数的反码,再原码的基础上,符号位不变,数值位按位取反
  58.             举例:
  59.                            符号位   数值位
  60.                     -7的反码:1     1111000
  61.                     3的反码: 0     0000011
  62.         补码:
  63.             正数的补码与原码保持一致;
  64.             负数的补码,再反码的基础之上,末位+1
  65.             举例:
  66.                            符号位   数值位
  67.                     -7的补码:1     1111001
  68.                     3的补码: 0     0000011
  69.                 11111001
  70.             +
  71.                 00000011
  72.               --------------
  73.         补码:   11111100
  74.         最终计算机是最终原码转10进制之后的结果
  75.                 符号位    数值位
  76.         补码:    1      1111100
  77.         反码:    1      1111011
  78.         原码:    1      0000100
  79.         -------------------------
  80.                  -4
复制代码
二、变量、数据类型
  1. Java是一门强类型语言。
  2. 变量:指的是在java程序运行过程中,其值可以发生改变的量
  3. 定义一个变量的语句
  4.     数据类型 变量名 = 初始化值;
  5. 数据类型:
  6.     基本数据类型:
  7.         整数类型:    所占字节数    可表示范围
  8.             byte         1             -2^7 ~ 2^-1
  9.             short        2             -2^15 ~ 2^15-1
  10.             int          4             -2^31 ~ 2^31-1
  11.             long         8             -2^63 ~ 2 ^63-1
  12.         小数类型:
  13.             float        4
  14.             double       8
  15.         布尔类型:
  16.             boolean      1
  17.         字符类型:        根据具体的编码来定,不同的编码下,java中一个字符所占的字节数是不同的
  18.         引用数据类型:
  19. 使用变量的注意事项:
  20.     1、变量要进行初始化赋值,才可以使用
  21.     2、在同一作用域下,变量名不能重复,可以大小写不一样,严格区分大小写
  22.     3、Java中整数默认是int类型,要想定义一个long类型的变量,需要在值的末尾加上l或L
  23.     4、Java中小数默认是double类型,要想定义一个float类型的变量,要在值的末尾加上f或F
  24. `
  25. public class DataTypeDemo1 {
  26.     public static void main(String[] args) {
  27.         //数据类型 变量名 = 初始化值;
  28.         //定义一个byte类型的变量
  29.         byte b1 = 100;
  30. //        b1 = 120;
  31. //        byte b1;
  32. //        byte B1 = 110;
  33.         System.out.println(b1); // 直接打印这个变量,实际上打印的是该变量存储的值
  34.         //定义一个short类型的变量
  35.         short s1 = 200;
  36.         System.out.println(s1);
  37.         //定义一个int类型的变量
  38.         int i1 = 300;
  39.         System.out.println(i1);
  40. //        int i2 = 30000000000;
  41.         long i2 = 30000000000L;
  42.         System.out.println(i2);
  43.         //定义一个float类型的变量
  44.         float f1 = 12.34F;
  45.         System.out.println(f1);
  46.         //定义一个double类型的变量
  47.         double d1 = 33.45;
  48.         System.out.println(d1);
  49.         //定义一个布尔类型的变量
  50.         boolean b2 = true;
  51.         System.out.println(b2);
  52.         //创建一个字符变量
  53.         char c1 = 'a';
  54.         System.out.println(c1);
  55.     }
  56. }
  57. `
  58. 数据类型转换:
  59.     在Java中,变量参与运算时,会先自动提升数据类型
  60.         自动数据类型转换:
  61.             byte,short,char -> int -> long -> float -> double
  62.         强制数据类型转换:
  63.             目标数据类型 变量名 = (目标数据类型)(要转型的值或表达式)
  64.             注:会损失精度
  65. public class DataTypeDemo2 {
  66.     public static void main(String[] args) {
  67.         //哪句是编译失败的呢?为什么呢?
  68. //        byte b1=3,b2=4,b; //不推荐这么定义
  69.         //工作的时候,推荐一个变量定义占用一行
  70.         byte b1=3;
  71.         byte b2=4;
  72.         byte b;
  73. //        b=b1+b2; // 如果是变量参与运算,会先自动类型转换,做完运算后,再判断是否可以进行赋值
  74.         //强制类型转换
  75.         b=(byte)(b1+b2);
  76.         System.out.println(b);
  77. //        b=3+4; // 如果是常量参与运算,会先进行运算,运算后,会判断结果是否在范围内,如果在直接赋值
  78.     }
  79. }
  80. 计算机中的数据都是采用补码进行运算的
  81. 130的补码:00000000 00000000 00000000 10000010
  82. 做强制类型转换:
  83. 补码:  (00000000 00000000 00000000) 10000010
  84. 补码:   10000010
  85. 已知补码求原码:
  86.         符号位      数值位
  87. 补码:    1        0000010
  88. 反码:    1        0000001
  89. 原码:    1        1111110
  90. -----------------------------
  91.        64 + 32 + 16 + 8 + 4 + 2 = 126
  92.        因为符号位是1,所以最终的结果是-126
  93. 注意:
  94.     1、+ 号两边若都没有字符串,这个就是最普通的算数加法运算
  95.     2、若有字符参与算数运算的话,java虚拟机会将该字符所对应的ASCII码表中的数值进行转换
  96.         记住三个特殊的字符对应的ASCII码值:
  97.             '0' - 48
  98.             'A' - 65
  99.             'a' - 97
  100.     3、同级别优先级的符号,从左向右进行运算
  101.     4、+ 号两边若任意一边是字符串,而是做字符串的左右拼接操作,拼接结束后是一个新的字符串
  102. public class DataTypeDemo4 {
  103.     public static void main(String[] args) {
  104.         //代码格式化的快捷键:ctrl + alt + L
  105. //        System.out.println('a'); // a
  106. //        System.out.println('a' + 1); // 98
  107.         System.out.println("hello" + 'a' + 1); // helloa1
  108.         System.out.println('a' + 1 + "hello"); // 98hello
  109.         System.out.println("5+5=" + 5 + 5); // 5+5=55
  110.         System.out.println(5 + 5 + "=5+5"); // 10=5+5
  111.         System.out.println("5+5=" + (5+5)); // 5+5=10
  112.     }
  113. }
复制代码
三、赋值
  1. 赋值运算符:
  2.     =  += -= *= /= %=
  3. public class FuZhiDemo1 {
  4.     public static void main(String[] args) {
  5.         int a = 3;
  6. //        a += 4;
  7. //        System.out.println(a);
  8.         a-=5;
  9.         System.out.println(a);
  10.     }
  11. }
复制代码
四、算数运算符
  1. 算数运算符:
  2.     + - * / % ++ --
  3.     java中,一个算数表达式最终的结果数据类型,是由参与运算最大的那个参数类型决定的
  4. ++: 自加1
  5.     ++在后,先赋值再进行自加1;++在前,先自加1,再赋值参与运算
  6. --: 自减1
  7.     --在后,先赋值再进行自减1;--在前,先自减1,再赋值参与运算
复制代码
五、关系运算符
  1. 关系运算符:
  2.     > < >= <= == !=
  3.     **关系表达式的结果一定是Boolean类型的**
复制代码
八、位运算符
  1. 逻辑运算符:
  2.     & | ^ ! && ||
  3.     **参与运算的参数类型都是Boolean,结果也是一个Boolean类型 **
  4.     & : 有false则false
  5.     |: 有true则true
  6.     ^ : 相同则false,相反则true
  7.     !: 将true变false,false变true
  8.     &&: 左边为false时,右边表达式不会执行,结果为false
  9.     ||: 左边为true时,右边表达式不会执行,结果为true
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表