首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

20天jvava(二)

2012-10-06 
20天jvava(2)1. 变量1.1 变量用于表示变化的数据1.2 Java是强类型语言,声明变量时必须指定明确的数据类型1

20天jvava(2)
1. 变量
  1.1 变量用于表示变化的数据
  1.2 Java是强类型语言,声明变量时必须指定明确的数据类型
  1.3 变量必须声明,并且初始化以后使用(变量初始化是指变量定义后,首次赋初值的过程)
  1.4 变量不能重复定义
  1.5 变量的作用域从变量声明的地方开始,到变量所在的块结束为止。不能使用作用域之外的变量
    int a; //定义变量a
    a=1;   //初始化变量a
    a=a+1; //使用变量a
    int b = a; //定义变量b,初始化变量b,使用变量a
 
2. 二进制
   2.1 内存只能存放二进制形式的数据,如0001 1001表示8位的二进制数据流,每一位称为1个比特(bit),每8位称为1个字节(byte)
    int i = 15;           15 -> 00000000 00000000 00000000 00001111
    char c = 'A';         'A'-> 00000000 01000001
          计算机默认接受10进制数据,自动转换为二进制数据
   
   2.2 二进制转换为十进制:
     123 = 1*100 + 2*10 + 3*1
         = 1×10^2 + 2×10^1 + 3×10^0
             基数: 10  权: 基数^n  
            基数 : 2   权:  128 64 32 16 8 4 2 1    
               例如:01000001 = 1*64 + 1*1 = 65
       
             方法Integer.parsetInt(String s,int radix)返回指定进制字符串的十进制整数
           
           
            十进制转换为二进制:
            128 64 32 16 8 4 2 1
      65 =  0   1  0  0  0 0 0 1
      68 =  0   1  0  0  0 1 0 0
           
           方法Integer.toBinaryString(int i)用于显示整数的二进制形式
           方法Integer.toString(int i,int radix)返回一个整数对应的指定进制的字符串
      
   2.3 十六进制是二进制的简写,以方便书写和记忆,每4位二进制对应1个16进制数字       
                  十六进制的基数是16,数字:0 1 2 3 4 5 6 7 8 9  a  b  c  d  e  f
       1111 1111 -> 0xff
       0x41 = 4 * 16 +1 = 65(10)
       0x4e2d = 0100 1110 0010 1101
          方法Integer.toHexString(int i)用于显示整数的二进制形式
      
        练习: 243(10)-> 1111 0011(2) -> 0xf3(16)
        256 128 64 32 16 8 4 2 1   15*16 + 3
             1   1  1  1 0 0 1 1
            
            
            
我们也已经学会如何将一个10进制数如何转换为二进制数。
不过,我们仍然没有学习一个负数如何用二进制表达。
比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码:     11111111 11111111 11111111 11111110
3、得补码:     11111111 11111111 11111111 11111111
                可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF



            
3. 数据类型
  3.1 Java的数据类型分为基本类型和引用类型。
     (1)基本类型代表简单的数据类型,比如整数和字符
     (2)引用类型能够表示任意一种复杂的数据结构,
     如Person、Date。
     (3)引用类型使用new关键字初始化,如Date d = new Date();         
  3.2 基本数据类型有8种:byte short int long
   float double char boolean
  3.3 基本数据类型:            
              
               整数类型:整数都是有符号整数(最高位是符号位,0表示整数,1表示负数)              
      byte  1个字节(8位)  -128 ~ 127
      short 2个字节(16位) -32768 ~ 32767
      int   4个字节(32位) -2^31 ~ 2^31-1 21亿+
      long  8个字节(64位) -2^63 ~ 2^63-1
                     直接量-字面量: 直接给出的常量值如: int a=100;
          (1) 整数的直接量的类型默认是int类型
          (2) 以L,l为结尾的字面量是long类型
     
               浮点类型:表示小数
      float  4个字节(32位)  单精度浮点数,使用float进行数学计算时会产生误差
      double 8个字节(64位)  双精度浮点数,double比float精确
                    浮点类型字面量后缀: d/D f/F,默认的浮点数字面量是double类型                 
     
                字符类型:采用unicode编码,是一种跨平台的字符编码
                字符类型的值对应字符的编码,所有字符都是16位无符号整数:
      char   2个字节(16位) 0 ~ 65535=2^16-1
                字符字面量使用单引号为定界符号:'中',字符类型字面量也是整数常量! 
         'A'  -> 0x0041    '中' -> 0x4e2d 
               在编码中 '0'~'9' , 'a'~'z', 'A'~'Z'都是连续编码的!
               特殊字符采用转义字符表示: '\n' '\r'  '\t' '\\' '\'' '"'  '\u4e2d'
              
              布尔类型: boolean,表示真假
                   字面量: true false
                  
4. 数据类型转换:
  4.1 自动类型转换(隐式类型转换)
          从小类型到大类型, 自动完成
              例 如: int n = 'A';
           long l = 'A';
                   char ->
           byte -> short -> int -> long -> float -> double

  4.2 强制类型转换, 从大类型到小类型需要强制转换
           强制类型转换有风险, 会造成精度损失或者溢出
   
    long l = 1024L*1024*1024*4; //0x100000000
    int i = (int)l;//0
   
    double pi = 3.1415926535897932384626;
    float f = (float)pi;
   
5. Java中的方法
  (1) 方法就是函数: z=f(x,y)=3x+6y;
  (2) 方法的语法
   (修饰词)(返回值类型)(方法名)(参数列表){
    //方法体
   }
  (3) 如果方法有返回值,方法体需要有return语句, 并返回和返回值类型兼容的数据
  (4) 方法的参数和方法内部的变量都是局部变量,这些变量作用域只在方法内部!
  (5) 实参: 方法调用传递的参数,实参的值在调用时传递给形参
               形参: 方法的参数定义,是临时变量.
   
 
  作业: 1 复习并且完成全部课堂演示代码, 添加适当的输出语句, 研究输出结果, 添加适当的注释.
        
       2 尝试 计算 10个以上 255 以内的整数2进制、16进制之间的相互转换. 并且编程验证计算结果

       3 定义方法: 参数是一个整数类型, 没有返回值,
       在方法中输出这个整数的10进制、2进制 、16进制字符串
      
       4.定义一个方法用于计算一个函数,数学函数为y=f(x)=2*x*x+5*x+1
                        在主方法中调用这个方法,并测试函数:
                               输入:1  输出:8
                               输入:2  输出:19
                       提示:在控制台输入信息使用类java.util.Scanner                    
                              
      
  预习: Java运算符, 流程控制语句. 参考day03.txt


     
     
     
     
     
     
     
     
     
     
     
     
     

热点排行