day2-笔记

来源:互联网 发布:java字符串补零 编辑:程序博客网 时间:2024/05/19 06:17

1.结构定义语句和功能执行语句的概念

class Test{

   public static void main(String[] args){//这个代码结构定义语句 {}括号标识

      int x=30;//这个代码功能执行语句 用;来结尾

     while(true){//结构定义

       if(){//结构定义

        x=50;  功能执行

        System.out.println(x);//功能执行

       }

     }

  }

}

2. 常量和变量 概念

   System.out.println("常量");//这就是常量 常量不可变 

   被 public static final 声明的 变量也是常量 

   / 在程序中被称作为转义字符 /r/n 一半一起用 表示回车换行 /b 退格键 /t 制表符(八位算一个单位)

 

  >> 变量

   int x=5; 这个x就是变量  //局部变量在声明的时候必须初始化 否则会报错

 >>变量的类型 分为基础类型(4类八种) 和引用类型(除了基本类型都是)

 >> 类型自动提升byte,short,char在参与运算之后, 会自动提升为int

 >>强制转换类型 就是大的变小的 会损失精度

    byte b= 1+1;//会报错 因为1+1自动提升为int 当想把int变成byte的时候需要强制类型转换

    byte b=(byte)1+1;

 >> 字符串相加 :任何值与字符串相加都得字符串

3. 函数(方法)的概念

 定义一个函数需要三步走 第一给函数个名字 第二你想让函数给你做什么(返回值类型)  第三 如果函数没有 你给他点材料 让他用用呗(参数列表)

  重载(overload)的概念: 方法名字相同 参数列表不同 个数不同 顺序不同 注意: 跟返回值类型没有一点关系 

4.运(晕)算符 不是特别重要 但是了解

  i++ 和 ++i 的区别

  i++是 先取值 在运算  

  ++i 先自增1.在取值

  & 想象成交集  两true &才true  && 短路  如果前面正确 后面就不知心了

  | 想象成并集  有true |就true  ||短路 如果前面 正确 后面就不执行了

  ! 你想怎样 就不怎样

  ^ 一男一女 就是true  两个男的 两个女的就是 false;  一个数异或另一个数两次还得自

 身

 

 

 

d).>> 右移, 将二进制的每一位向右移动, 低位忽略, 高位以前是0就补0, 以前是1就补1.

e).>>> 无符号右移, 将二进制的每一位向右移动, 低位忽略, 高位补0.

f).<< 左移, 将二进制的每一位向左移动, 高位忽略, 低位补0.

 

 

5.两个数字交换 不用第三个中间变量

 int x=5;

 int y=10;

 x=x^y; x=5^10;

 y=x^y;  y=5^10^10=5;

 x=x^y;  x=5^10^5=10

 

 x=x+y;  x=5+10=15;

 y=x-y;  y=15-10=5;

 x=x-y;  x=15-5=10;

 

骨灰版

 x = y ^ (y = x) ^ x;

 x = y + (y = x) - x;

 //  System.out.println("/u0028");//一个特殊的字符

          int  x=198;

          int y=0;

          StringBuffer sb=new StringBuffer();

          while(x>0){

           y=x%2 //y=x&01;//两个是等价的

             x=x/2;

            sb.append(y);

    }

 

      System.out.println(sb.reverse());

         int  x=198;

          int y=0;

          StringBuffer sb=new StringBuffer();

          while(x>0){

            y=x&0xf;// y=x%16;

            if(y<10){

                 sb.append(y);

            }else {

                sb.append((char)('A'+(y-10)));

             }

             x=x/16;

    }

      System.out.println(sb.reverse());

 

由此可以推出 一个 数的取余 就相当于 一个 & 它需要取余的数 减一;      例子 8%5 相当于 8&(5-1)

20%16=4

00010100

00001111   代表15 0xf

_________

00000100

为什么要取最低的4位 因为最低的4位表示这个数不满16的部分

 

20%8=4

00010100

00000111   代表 7 07

________

00000100   

这个取最低的3位 表示不满 8的部分

 

 

return  表示 返回 当前的方法 下面的语句不再执行

 

 

重载的理解

   public static void main(String[] args){

      int a=run(5,9);

      System.out.println(a);

      run(6);

    }

   public static void run(int i){

    System.out.println("我是无惨构造");

  }

   //这个算重载 重载不关心返回值类型

   public static int run(int i,int j){

   return i+j;

   }

    //不算重载 因为参数列表相同  和返回值无关 重载只关心 参数列表 和方法名字 不关心返回值类型

    public static double run(int i){ 

     return i+0.01;

    }

 i++  和++i 遗留的问题

public class Test{

  public static void main(String[] args){

    int i=0;

     //System.out.println(i++);//  先取值 后 运算   现在的i++ 是0 不过已打印就是1

 

    System.out.println(++i);  现在的++i就是 1  打印还是1 先运算后取值

     System.out.println(i);

 }

}