JAVA基础学习笔记(二)

/ 0评 / 0
java 源文件
===========================================
  * 公共类类名,与文件名一致
      
      <>
      ----------------------------------
        public class HelloWorld {
        
        }

  * package 包
      
      *)用来分门别类,存放不同的类
      *)本质是文件夹


  * import 导包
      
      用来指明一个类的完整路径,
      后面代码中,可以简写类名
      
        import android.widget.EditText;
        import android.widget.*;
  
   
java 数据类型
========================================
  * 基本类型
  * 引用类型


基本类型
============================================
  * 八种
    
    byte      1字节,-128到127,-2^7到2^7-1
    short     2字节,-2^15到2^15-1
    int       4字节,-2^31到2^31-1
    long      8字节,-2^63到2^63-1
    
    float     4字节,单精度
    double    8字节,双精度
              
              美国工业电气协会浮点数表示规范
    
    char      2字节,0 到 2^16-1,0到65535
    
              字符、字符的数字编码
              
              char c = 'a';
              char c = '中';
              char c = 97;
              char c = 20013;
    
    boolean   1字节
              
              真 true     00000001
              假 false    00000000


基本类型字面值
=============================================
  1.整数字面值是 int 类型
        
        int a = 65364
        long a = 9999999999; //错,右侧字面值是int类型,但超出int范围

  2.byte,short,char 比 int 范围小的整数
    可以用范围内的值直接赋值
        
        byte a = 127;//对,右侧是 byte 类型
        byte a = 128;//错,右侧是 int 类型

  3.浮点数是 double 类型
        
        double a = 3.14;
        float a = 3.14;//错,右侧是 double 
  
  4.字面值后缀
        
        L   long
            long a = 9999999999L;
            
        F   float
            flaot a = 3.14F;
        
        D   double
            double a = 3D;
  
  5.进制前缀
        
        0x  16进制
            
            0xff   255
        
        0   8进制
            
            0377   255
        
        \u  char类型16进制
            
            '\u0061'    97      'a'
            '\u4e2d'    20013   '中'
      
        
基本类型运算规则
========================================
  1.运算结果的数据类型
    与运算项中范围最大的类型一致
        
        3 / 2   得 1
        3d / 2  得 1.5
  
  2.byte,short,char 比 int 范围小的整数
    运算时,会先自动转成 int 类型
        
        byte a = 2;
        byte b = 3;
        byte c = a + b;//错,右侧是int + int,结果是 int
  
  3.整数数运算溢出
      
        int a = Integer.MAX_VALUE;
        
        a = a + 1;//负数最小值
        
        01111111111111111111111111111111  +  1
        10000000000000000000000000000000
        
  4.浮点数运算不精确
        
        2-1.9     得 0.1000000000000009
        4.35*100  得 434.9999999999999994

  
  5.浮点数特殊值
        
        Infinity
        无穷大
        ------------------------
          3.14/0
          Double.MAX_VALUE*2
        
        NaN
        Not a Number
        ------------------------
          Math.sqrt(-2)
        
       
基本类型类型转换
==========================================
  * 范围小的类型 --> 范围大的类型
      
      byte a = 127;
      int b = a;
          
          01111111
          00000000 00000000 00000000 01111111
      
      byte a = -128;
      int b = a;
          
          10000000
          11111111 11111111 11111111 10000000


  * 范围大的类型 --> 范围小的类型
  
    强制转型
      
      int a = 356;
      byte b = (byte) a;
          
          00000000 00000000 00000001 01100100
          
          01100100 


运算符
=========================================
  +-*/
      
  +   数学运算、 字符串的连接运算
  
  %   取余
      
       0 % 3   0
       1 % 3   1
       2 % 3   2
       3 % 3   0
       4 % 3   1
       5 % 3   2
       6 % 3   0
       7 % 3   1
       8 % 3   2
       9 % 3   0
       10 % 3  1

       判断能否被4整除,是看有没有余数       
       x % 4 是 0

  > >= < <= == !=
       
       a = 2
       b = 3
       
       a > b    false
       a < b    true
       a == b   false
       a != b   true

  
    &&  逻辑与,两侧同时是真结果是真,
        任意一侧是假结果是假
        短路与: 左侧是假,右侧被忽略
    
    ||  逻辑或,两侧同时是假结果是假,
        任意一侧是真结果是真
        短路或: 左侧是真,右侧被忽略
    
    
    !   非,真变假,假变真
        
        可以做相反的判断
        
        如果“非a”是真,即a是假
        if(!a) {
            
        }
    
  
  
  & 位与:两位同时是1结果是1,任意一位是0结果是0
  | 位或:两位同时是0结果是0,任意一位是1结果是1
  ^ 异或:不同是1,相同是0;
         对同一个值异或两次得到原值;
         可以对boolean值求异或
    
  ~ 求反:1变0,0变1
  
  >>  带符号右移位,
      符号位是0,左侧补0;
      符号位是1,左侧补1。
      
  >>> 不带符号右移位,
      不管符号位是0还是1,左侧补0
      
  <<  左移位,右侧补0
  
  
  ++
  --
      自增、自减
      
      int a = 10;
      //a先自增变成11,打印显示a的原值10
      System.out.println(a++);
      
      int a = 10;
      //a先自增变成11,打印显示a的新值11
      System.out.println(++a);
      
      int a = 10;
      int b = a++;//a是11, b是10
      
      int a = 10;
      a = a++;//a先自增变成11,再被赋a的原值10

  
  ? :
      三项运算
      
      1 ? 2 : 3
      
      1是真,执行2;
      1是假,执行3。
  
  =   赋值运算
  
  +=
  -+
  /=
  ^=
  >>=
  ...
      a += 3; // a = a+3;
      赋值运算与其他运算符联用,
      会自动转型
      
      byte a = 10;
      a = (byte) (a + 3);
      a += 3;
      a += 3.14;
      
  
  *)运算符优先级
        
        不用记优先级高低,
        只需要多加小括号
        
        (1+(2-3))*4/5
  
  
流程控制语句
=========================================
  if-else if-else
      
      if(条件1) {
          1
      } else if(条件2) {
          2
      } else if(条件3) {
          3
      } else {
          4
      }
  
  switch-case-default
      
      *)只能判断 byte,short,char,int,     enum
      *)当一个case成立,从这个case向后无条件
        执行每个case,直到结束,或者遇到 break
        中断执行(跳出switch)
        
      
      switch(变量或表达式) {
          case 10:
          case 3:
              
              break;
          case 50:
          case 30:
          default:
      }
  
  for
      
      for(定义变量; 执行条件; 变量修改) {
          重复执行的代码
      }
      
      for(int i=1; i<=10; i++) {
          System.out.println(i);
      }
  
  while
      先判断后执行
      
      while(执行条件) {
          
      }

  do-while
      先执行后判断
      至少执行一次
      
      do {
          
      } while(执行条件);


  
  循环嵌套
  -------------------------------
    for(int i=1;i<=3;i++) {
        for(int j=1;j<=2;j++) {
            i, j
        }
    }
    
    i     j
    ----  ----
    1     1
    1     2
    2     1
    2     2
    3     1
    3     2
    
    
   
  break
  continue
  -------------------------------
    break     中断循环、跳出循环 
    
    continue  继续执行循环的下一轮
        
        for(int i=x; i<=y; i++) {
            ....
            ...
            continue;//跳到 i++ 执行
            ...
            ...
        }


  循环命名
  -----------------------------------
    outer:
    for(...) {
        for(...) {
            break outer;
            continue outer;
        }
    }
    
    
   
数组
=========================================
  * 用来存放一组数据
  
  创建数组
  ------------------------------------
    1. int[] a = new int[5];
          
          创建长度是5的数组,
          每个位置都有默认值0
    
    2. int[] a = {5,3,75,2,5,7,45,3};
    
    3. 如果为 a 变量重新赋一个新的数组
          
          a = new int[]{2,23,23,6};
  
  访问数组
  ------------------------------
    a[0] = 232
    print(a[2])
    int b = a[3] + 2
    a[1]++
  
  数组长度属性
  ------------------------------
    a.length
    
    *)最大下标是 a.length-1
    *)长度不可变
    *)数组长度可以是0
  
  
  数组遍历
  ------------------------------
    从 0 位置到 a.length-1 位置,
    依次访问每个位置
    
    for(int i=0; i
    

评论已关闭。