Java基础班学习笔记(2)

知识要点:

关键字     标识符    注释     常量、进制和进制转换    变量    数据类型和类型转换    运算符     语句
 
1:关键字(掌握)
    (1)被Java语言赋予特定含义的单词
    (2)特点:
        全部小写。
    (3)注意事项:
        A:goto和const作为保留字存在。
        B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记

用于定义访问权限修饰符的关键字

private

protected

public

 
 

用于定义类,函数,变量修饰符的关键字

abstract

final

static

synchronized

 

用于定义类与类之间关系的关键字

extends

implements

 
 
 

用于定义建立实例及引用实例,判断实例的关键字

new

this

super

instanceof

 

用于异常处理的关键字

try

catch

finally

throw

throws

用于包的关键字

package

import

 
 
 

其他修饰符关键字

native

strictfp

transient

volatile

assert

 
2:标识符(掌握)
(1)就是给类,接口,方法,变量等起名字的字符序列
(2)组成规则:
    A:英文大小写字母
    B:数字
    C:$和_
(3)注意事项:
    A:不能以数字开头
    B:不能是java中的关键字
    C:区分大小写
(4)常见的命名规则(见名知意)
A: 包 全部小写
    单级包:小写
    举例:liuyi,com
    多级包:小写,并用.隔开
    举例:cn.itcast,com.baidu
B: 类或者接口
    一个单词:首字母大写
    举例:Student,Demo
    多个单词:每个单词首字母大写
    举例:HelloWorld,StudentName
C:方法或者变量
   一个单词:首字母小写
    举例:name,main
   多个单词:从第二个单词开始,每个单词首字母大写
    举例:studentAge,showAllNames()
D:常量
   全部大写
   一个单词:大写
    举例:PI
   多个单词:大写,并用_隔开
    举例:STUDENT_MAX_AGE
 
3:注释(掌握)
(1)就是对程序进行解释说明的文字
(2)分类:
  A:单行注释 //
  B:多行注释 /**/
  C:文档注释(后面讲) /** */
(3)把HelloWorld案例写了一个带注释的版本。
  后面我们要写一个程序的过程。
  需求:
  分析:
  实现:
  代码体现:
(4)注释的作用
  A:解释说明程序,提高了代码的阅读性。
  B:可以帮助我们调试程序。
    后面我们会讲解一个更高端的一个调试工具
 
4:常量(掌握)
(1)在程序执行的过程中,其值不发生改变的量
(2)分类:
  A:字面值常量
  B:自定义常量(后面讲)
 (3)字面值常量
  A:字符串常量 "hello"
  B:整数常量 12,23
  C:小数常量 12.345
  D:字符常量 'a','A','0'
  E:布尔常量 true,false
  F:空常量 null(后面讲)
 (4)在Java中针对整数常量提供了四种表现形式
  A:二进制 由0,1组成。以0b开头。
  B:八进制 由0,1,...7组成。以0开头。
  C:十进制 由0,1,...9组成。整数默认是十进制。
  D:十六进制 由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
进制概述以及二进制,八进制,十六进制图解
 
5:进制转换(了解)
(1)其他进制到十进制
  系数:就是每一个位上的数值
  基数:x进制的基数就是x
  权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
 
  结果:系数*基数^权次幂之和。
(2)十进制到其他进制
  除基取余,直到商为0,余数反转。
(3)进制转换的快速转换法
  A:十进制和二进制间的转换
   8421码。
  B:二进制到八进制,十六进制的转换
        二进制到八进制       3位组合
            100110
        二进制到十六进制    4位组合
            100110
任意进制到十进制的转换
十进制到任意进制的转换
快速的进制转换法
. 原码反码  
    在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
原码 :
    就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码 :
    正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码 :
    正数的补码与其原码相同;负数的补码是在其反码的末位
原码反码补码的讲解
 
6:变量(掌握)
(1)在程序的执行过程中,其值在某个范围内可以发生改变的量
(2)变量的定义格式:
  A:数据类型 变量名 = 初始化值;
  B:数据类型 变量名;
    变量名 = 初始化值;
 
7:数据类型(掌握)
(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
  A:基本数据类型:4类8种
  B:引用数据类型:类,接口,数组。
(3)基本数据类型
  A:整数 占用字节数
   byte      1
   short     2
   int         4
   long      8
  B:浮点数
   float      4
   double   8
  C:字符
   char       2
  D:布尔
   boolean 1
         
  注意:
   整数默认是int类型,浮点数默认是double。
   
   长整数要加L或者l。
   单精度的浮点数要加F或者f。
 
8:数据类型转换(掌握)
 (1)boolean类型不参与转换
 (2)默认转换
  A:从小到大
  B:byte,short,char -- int -- long -- float -- double
  C:byte,short,char之间不相互转换,直接转成int类型参与运算。
 (3)强制转换
  A:从大到小
  B:可能会有精度的损失,一般不建议这样使用。
  C:格式:
   目标数据类型 变量名 = (目标数据类型) (被转换的数据);
 (4)思考题和面试题:#面试#
  A:下面两种方式有区别吗?
   float f1 = 12.345f;
   float f2 = (float)12.345;
  B:下面的程序有问题吗,如果有,在哪里呢?
   byte b1 = 3;
   byte b2 = 4;
   byte b3 = b1 + b2;    //有,因为变量相加会先看类型问题,这个是类型提升,所以有问题(byte相加
                                                会类型提升--int,int赋值 给byte而没有经过强转, 所以编译会报错)
   byte b4 = 3 + 4;        //没有,常量,先计算出来,看结果是否超过byte范围,如果不超过就不报错
                                           
    在定义Long或者Float类型变量的时候,要加L或者f。
    整数默认是int类型,浮点数默认是double。
    byte,short在定义的时候,他们接收的其实是一个int类型的值。
    这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。
  C:下面的操作结果是什么呢?
   byte b = (byte)130;    //-126(详解见下)
  D:字符参与运算
   是查找ASCII里面的值
   'a' 97
   'A' 65
   '0' 48
   
   System.out.println('a');    //结果:a
   System.out.println('a' + 1);    //结果:98
  E:字符串参与运算
   这里其实是字符串的连接
   System.out.println("hello"+'a'+1);    //helloa1
   System.out.println('a'+1+"hello");    //98hello
   System.out.println("5+5="+5+5);    //5+5=55
   System.out.println(5+5+"=5+5");    //10=5+5 
思考题:在java中为什么  int的范围是-2^31到2^31-1
弄清楚为什么java中Byte类型的取值范围是-128~127 ?也就明白上面的问题了:
    Byte占一个字节8位,首位是符号位,最大值为0111 1111即127,关键是这个-128,有人说首位是符号位,那就是剩余的7位表示真值,最大为111 1111,最小为000 0000,那最小即为1000 0000,就是-128,(关键是不是说好首位是符号位了么?怎么负数算真值得时候又把首位1给算进去了?)
 
(负数)最大 1111 1111 代表的是-1 最小1000 0000 代表的是 -128 这个很难理解嘛?
    1111 1111、1000 0000代表的是-1,-128的补码,在内存中,存放的都是补码,不是涉及到负数,负数所谓的补码就是他们绝对值的原码的取反加+1  
    比如 -1的绝对值是1 1的原码是0000 0001 反码是 1111 1110
反码+1 也就是补码就是 1111 1111
    -128的绝对值是 128  原码是 1000 0000 反码是 0111 1111
反码+1 也就是 1000 0000
(补充:)
①在内存中,存放的都是补码,不是涉及到负数,都用补码,正数、负数在内存中都是补码形式表示,只不过正数的补码与其原码相同,而负数的补码是其绝对值的原码的反码+1
128:10000000
-128:10000000 (这里的1即是符号位,也是数值位)
/*
 byte b = 130;有没有问题?如果我想让赋值正确,
  可以怎么做?结果是多少呢?
 练习:byte b = (byte)300;
*/
class DataTypeDemo7 {
 public static void main(String[] args) {
  //因为byte的范围是:-128到127。
  //而130不在此范围内,所以报错。
  //byte b = 130;
 
  //我们可以使用强制类型转换
  byte b = (byte) 130;
 
  //结果是多少呢?
  System.out.println(b);
 }
}
/*
 分析过程:
  我们要想知道结果是什么,就应该知道是如何进行计算的。
  而我们又知道计算机中数据的运算都是补码进行的。
  而要得到补码,首先要计算出数据的二进制。
 
  A:获取130这个数据的二进制。
   00000000 00000000 00000000 10000010
   这是130的原码,也是反码,还是补码。
  B:做截取操作,截成byte类型的了。
   10000010
   这个结果是补码。
  C:已知补码求原码。
     符号位 数值位
   补码: 1 0000010
   
   反码: 1 0000001
   
   原码: 1 1111110 = -126
*/
附录:

运算符的优先级(从高到低)

优先级

描述

运算符

1

括号

()[]

2

正负号

+-

3

自增自减,非

++--!

4

乘除,取余

*/%

5

加减

+-

6

移位运算

<<>>>>>

7

大小关系

>>=<<=

8

相等关系

==!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=+=-=*=/=%=

16

位赋值运算

&=|=<<=>>=>>>=

 

posted @ 2015-05-07 13:32  苏坡漫  阅读(216)  评论(0编辑  收藏  举报