现在的位置: 首页 > 综合 > 正文

第一、二天:java入门

2018年05月16日 ⁄ 综合 ⁄ 共 4246字 ⁄ 字号 评论关闭

1 变量
 1 他 她 我 你 某人 佚名 旺财 X-man x = 1
   您好! 它
 2 int age = 15;// 00000000 00000000 00000000 00001111 
 
 3 Java 中的变量
   a Java是强类型语言,
   b 变量必须声明,并且初始化以后使用
   c 变量必须有明确的类型
   d 变量不能重复定义
 4 变量的作用域
   a 在声明的地方开始,到块结束为止
   b 离开变量的作用域结束,变量将回收。
 
2 二进制
 1 计算机内部只有二进制数据!
  int i = 5; char c = 'A';
   ‘A’-> 01000001
   15 -> 00000000 00000000 00000000 00001111
 2 二进制: 1111= 1*2^3+1*2^2+ 1*2^1 + 1*2^0
              = 1*8 + 1*4 + 1*2 + 1*1
              = 15(10)
                    
     01000001 = 1*64 + 1*1
              = 65(10)
    
    128 64 32 16 8 4 2 1
     1   1  0  0 0 0 0 0 = 192(10)
 
 3 十进制:  65 = 6*10 + 5*1 
              = 6*10^1 + 5*10^0
              
  256 128 64 32 16 8 4 2 1
   95(10)=   0  1   0  1 1 1 1 1 (2)
   
 4 16进制
   0 1 2 3 4 5 6 7 8 9 a b c d e f 
  10 11 12 13 
   
   41(16) = 4 * 16 +1 = 65(10)
   4    1 
 0100 0001(2)   
   * 将16进制作为2进制的简写形式.
   
   4e2d(16)=0100 1110 0010 1101(2)
   
 5 八进制是二进制的简写,3位对应转换
 八进制中的一位代表二进制中的3位,而十六进制中一位代表二进制中的4位。
 八进制中最大表示是十进制的7,所以不可能有8.
   
 练习:
  243(10)-> 1111 0011(2) -> f3(16)
 
Java的数据类型
  1 Java数据分为基本类型和引用类型.
  2 基本类型分为八种: 
    byte short int long float 
    double char boolean
    
    八种类型又可分为四大类型:
    a 整数类型 byte short int long(注意byte是整数类型)
    b 浮点类型 float double
    c 字符类型 char(竟然不是String,原来String是引用类型)
    d 布尔类型 boolean 
    但是这八种其中short和float从来不用。
    
   a 整数类型 byte short int long(注意byte是整数类型)
   
     整数都是有符号整数(最高位是0表示正数,最高位是1表示负数)补码?
    
     十分重要:在计算机内部,所有的数据都是先根据各种形式的编码如unicode,gbk等,
     对应一个二进制的数值,然后二进制在存储的时间,它是按照补码的形式来存储的,
     正数的补码与原码是一样的,所以可以按照二进制直接存储,而负数的的补码是符号位
     不变其它依次取反后,再加1即可。所以下面的负数范围就容易理解了,因为它是在全部、
     取反之后再加1的,所以比正数永远大1,但是其表示的数的个数是一样的,因为在补码中
     正数包括0,而负数不包括0. 
     
     byte   8bit  -128 ~ +127  //最高位表示符号位,所以只有7位真正表示数字大小,以下相同。
     short 16bit  -32768 ~ 32767
     int   32bit  -2G ~ 2G-1  -2^31 ~ 2^31-1=2^30+2^29+2^28+.....+2^0=65536-1=65535;
     long  64bit  -2^63 ~ 2^63-1
     
    建议使用int, 很少使用short,
    使用int要注意取值范围, int 的值不大!大概是加起来是21个亿
   
   为什么windows 32位操作系统只能识别不到4G的内存?
   32位无符号极值才是4G,32位在表示内存空间时间用int表示,操作系统在表示时间,最多只能
   表示4G,再多它就不管了。其实32位就表示CPU上的32个针脚,有的针脚是用来连接硬件的,如:
   键盘,鼠标,显卡等。用int表示少一个符号位,正负相加大概也是这么多。
   如果64位就有64个针脚,那就比较大了。
   
   有一个很有趣的问题,就是java的byte和short数据类型存储到java中以后,还是以int数据类型
   存储的,所以并不会减少内存的占用量。
    
    直接量-字面量: 就是直接给出的常量值如: 1 
    a 整数的直接量的类型默认是int类型
    b 以L,l为结尾的字面量是long类型
      1024 
      1024L
    c 可以使用整数直接量给byte,short类型赋值
      但是不要超过byte和short的范围.
      
    且记:a是变量而127是直接量,在java下层的处理绝对不一样。
    
    
  2 浮点数: 就是小数, float, double
   34642323.44 = 3.464232344 * 10^7
                   尾数                        指数
   10001000.(2) 
   1.0001000 * 2^111(2)
   尾数       基数   指数
  在计算机中只需要保存尾数和指数即可。
  
   float 32位=1(符号位)+8(指数位)+23(尾数位)  计算机底层就是按照这样的32位存储的。
   0     00000111 10001000000000000000000 
   符号位 指数      
尾数
   
   
   int a = 0x7fffffff;//这个是正数的最大值 。0111 1111 1111 1111 1111 1111 1111 1111 1111共32位。
   float f = a;
   从上面可以知道float最多可以表示23个1,如果把这31个1赋值给它,那么多余的它舍去。所以此时 int更为精确 。
  /**
* 从这样我们可以明确的得出,浮点数并不精确

* 因为a与b相差15,但是用float表示后,它们的值是一样的。
* 所以float并不精确,所以float基本不用,它太不精确了,只有23位的位数。
* 所以尾数越大,越精确,所以用double.常用生活中基本不用float,都用double。
* 只需要记住一个结论:
* double精确,float不精确,所以只使用double.
*/  
   
  double 
  1 符号位
  11 指数
  52 尾数
   
    a double 是64位, float 32位
      double比float精确
      
    b 默认的浮点数字面量是: double类型的
    
      字面量后缀: d/D f/F
      double d = 1d;//1.0
      1 1L 1D 1F
    c 只使用double计算浮点数,float类型基本不用!
    
      浮点数不能给精确运算
      
     int:10001000 -> float:1.0001000*2^111 
     
     0 00000111 10001000 00000000 0000000
   
   
     
 3 字符类型:char, 字符类型是一个16位无符号整数!
  所以字符类型是一个整数 。
   a 字符类型的值是对应字符的编码, 是unicode
     编码. Java支持国际化.
     英文部分的值与ascII编码一致.
     char是定长编码, 所以的字符都是16位.
     'A' -> 0x0041
     '中'-> 0x4e2d
     
     在编码中: '0'~'9' , 'a'~'z', 'A'~'Z'
     都是连续编码的!
     
     '0'=='\u0000'  '\u0000'==0
   b 最小值:0, 最大值:65535 = 2^16-1
   c 字符字面量使用单引号为定界符号:'中'
   
     字面量也是整数常量!
     
     特殊字符采用转义字符表示:
     如: '\n' '\t' '\\' '\b' '\r' 
        '\'' '\"'  '\u4e2d' 
   
     char c = '\\';
     
     //结论:字符是一个数字, 是字符的Unicode编码值.

   // println() 方法根据参数类型,其实就是重载
   //采用不同的输出方式, 整数输出整数, 字符输出字符

   /**
    * 对于char类型赋值的,如果是个字符,那么它会直接打印出字符 
    * 如果是个int整型 ,那么它们根据 这个int的值 转换成相应的unicode编码的
    * char类型。
    * 如果你把字符赋值给一个int类型,那么它就是其相应的unicode编码 。
    */    
 4布尔类型: boolean 
  字面量: true false
  布尔变量的定义变量用isMan.这样的。要表达清楚 。不要随便定义一个变量。

数据类型转换:
  1 自动类型转换(隐式类型转换)
    从小类型到大类型, 自动完成
    如: int n = 'A';
       long l = 'A';
        char  ->
byte -> short -> int -> long -> float -> double
 
 char是直接转换成int.
 
 
  2 强制类型转换, 从大类型到小类型需要强制转换
    强制类型转换有风险, 会造成精度损失或者溢出
    
    long l = 1024L*1024*1024*4;//0x100000000
    int i = (int)l;//0
    
    //此时表示的long类型的最大值 ,当转换成int时间,必定溢出。long最大是8G。
    
    double pi = 3.1415926535897932384;
    float f = (float)pi;
 
Java中的方法
  1 方法就是函数: y=f(x)=3x+6;
  2 方法的语法
   (修饰词)(返回值类型)(方法名)(参数列表){
   //方法体
   }
  3 方法需要有return语句, 返回和返回值类型
     兼容的数据
  4 方法的参数和方法内部的变量 都是局部变量,
    这些变量作用域只在方法内部!
  5 实参: 方法调用的参数
    形参: 方法的参数定义,是临时变量.

作业
  1 将课堂练习,练会.

预习:
  运算符,和流程控制结构。
  
  
  
  
  
 
 
 
     
    
      
    
    
    
    
    
    
    
    
    
    
    
    
    
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

【上篇】
【下篇】

抱歉!评论已关闭.