A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-8-15 12:36  /  337 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

sa
  1. /*
  2. 1、关键字
  3.         定义:被java语言赋予了特殊含义的单词。main不是关键字。goto  const是保留字
  4.         特点:字母均为小写
  5.        
  6.         用于定义数据类型的关键字:class interface byte short char int float long
  7.         double boolean void
  8.         用于定义数据类型值: true false null
  9.         用于定义访问权限修饰符:public protected private
  10.         用于定义定义类,函数,变量修饰符的关键字:abstract final static synchronized
  11.         用于定义类与类之间的关系:extends implements
  12.         用于定义新建实例和引用实例,判断实例的关键字:new this super instanceof
  13.         用于异常处理的:throws throw try catch finally
  14.         用于包的关键字:package import
  15.         其他修饰符: native strictfp transient volatile assert

  16. 2、java中的常量分类
  17.         1 整数常量
  18.         2 小数常量
  19.         3 boolean型常量:true false
  20.         4 字符常量:单引号括起的单数字或字母或符号,如'a' '\t'
  21.         5 字符串常量:双引号标识的一个或多个字符,"h","hello woer"
  22.         5 null常量:只有一个数值,null

  23. 3、java中的8中基本数据类型
  24.         byte 1字节                char 2字节                short 2字节                int 4字节
  25.         float 4字节                long 8字节                double 8字节        boolean

  26.         PS:整数的默认类型是 int                小数的默认类型是 double

  27.         long l = 1234355654; //错误,超出int范围
  28.         long l = 1234355654L;//正确,加L使编译器知道数据类型是long

  29.         float f = 2.3;// 错误,默认小数数double
  30.         float f = 2.3f;//正确 ,加标识f

  31.         3种引用数据类型: 类 class                接口 interface                数组[]

  32.         常见错误:        1 定义long型数据,赋值时未加标识L
  33.                                 2 定义float,赋值或初始化没添加f,编译器识别为double型
  34.                                 3 定义变量后,未初始化即使用
  35.                                         int a; System.out.println(a);
  36.                                 4 使用不存在的变量或在变量作用域之外使用变量

  37. 4、类型转换
  38.         1 自动类型转换
  39.                 int a = 3;
  40.                 byte b = 2;
  41.                 a = a + b;
  42.                 运算时,b自动转换为int型  再与a相加

  43.         2 强制类型转换
  44.                 运算时,数据类型不一致,需要进行手动强制转换
  45.                 int a = 3;
  46.                 byte b = 2;
  47.                 b = (byte)(a + b);
  48.                 (a+b)运算时,自动转换为int型,要将结果赋给byte型,必须强制转换

  49.         PS:1 非数值类型不能进行数学运算,如  
  50.                         int a = 2; boolean n = true;
  51.                         a = a + n;//错误
  52.                 2 char类型数据可以直接与int类型相加,但char类型数据会自动提升为int型
  53.                         byte a = 0;
  54.                         char b = 'a';
  55.                         byte result = a + b;// 错误: 不兼容的类型: 从int转换到byte可能会有损失
  56.                         ____________________________________________________
  57.                         int a = 97;
  58.                         char b = 'a';
  59.                         boolean res = (a==b);//true

  60.         总结:表达式的数据类型的自动提升;

  61.                 1 所有的byte short char型自动提升为int型
  62.                 2 提升等级 double -> float -> int,表达式中如果存在等级高的类型,则结果为等级高的类型

  63.                         int a = 2;
  64.                         float f = 2.1f;
  65.                         long l = 2L;
  66.                         double d = 2.0;
  67.                         l = l + f;//错误: 不兼容的类型: 从float转换到long可能会有损失
  68.                         f = f + l;
  69.                         d = d + l;
  70.                         f = f + d;//错误

  71.                 PS: 表达式中只有常量与常量的运算时不会自动提升
  72.                         class Test
  73.                         {
  74.                                 public static void main(String[] args)
  75.                                 {
  76.                                         byte b = 3 + 7;
  77.                                         byte a = 3 + 'a';
  78.                                         System.out.println(b+"..."+a);
  79.                                         byte b1 = 3;
  80.                                         byte b2 = 7;
  81.                                         byte b3 = b1 + b2;//错误
  82.                                 }
  83.                         }

  84.                         输出结果:10...100

  85.                         错误原因:涉及到编译器编译程序时候的细节,之所以byte b = 3 +7;,没有报错,是因为3和7都是
  86.                                 常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。 而b = b1
  87.                                 + b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个
  88.                                 byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范
  89.                                 围,因此就会报错。

  90. 5、b = a++;(假设数据都是整型)语句在计算机中的实际执行:

  91.         说明:计算机中的实际操作为:当执行b = a++;语句时,先把a放在一个临时内存空间中,然后将a自
  92. 加1,再将临时内存空间中的a赋值给b,因此b还是原来的a的值。
  93.         代码表现:        int temp = a; //将a的值存至临时内存
  94.                                 b = temp; //a的值赋给b
  95.                                 a = a + 1; //变量a加1

  96. 6、short s = 3; 则语句 s += 4;和语句 s = s + 4; 的区别:
  97.        
  98.         1 在执行s+=4;语句时,编译器在编译的时候,默认进行了强制类型转换,也就是将int类型的数
  99. 据转换成short类型的数据。

  100.         2 在执行s = s + 4;语句时,编译器在编译的时候,默认并没有强制类型转换。 所以,s是short类
  101. 型,4是int类型,s会自动提升为int类型,相加的和也是int类型,赋值给short类型的变量肯定会损失精
  102. 度。 这时候就需要进行强制类型转换:s = (short)(s + 4);。
  103. */
复制代码

1 个回复

倒序浏览
这是新学到的知识吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马