java基本语法

  关键字和保留字:
    关键字:对编译器有特殊含义的
    保留字:版本尚未使用 以后版本的发展中可能会编程关键字

  标识符: 定义 类 方法 变量 对象 的名字
    标识符组成: 字母 数字 下划线(_) 美元符号($)
    定义标识符不能使用数字开头,不能使用关键字和保留字!
    标识符是严格区分大小写的!

  标识符命名规则:
    驼峰命名法:

      对于类名 每个单词的首字母大写 比如:HelloWorld
      对于变量名 方法名 对象名 第一个单词的首字母小写 比如:studentAge

  注释: //单行注释
      /*多行注释
       /**文档注释 作用 1.显示信息 2.生成文档说明书(javadoc)

  java中的数据类型: 基本数据类型 引用数据类型(抽象数据类型)

    基本数据类型: 8种 必须都记住每一种类型的长度
    整数型数据:byte(8位) 范围:-128-127
          short(短整型 16位)
          int(整型 32位)
          long(长整型 64位)

     浮点型(小数): float(32位): F f来表示

                float f=23.4//会报错 要写为 float f=23.4f;

            double(64位):D d来表示
            小数不声明默认为double
    字符型: char(16位)
          在java中 中文占16位(占2个字节) 英文占8位(占1个字节)

    boolean(一位): true false

      在java中 byte short char的类型数据在运算时都会自动转换为int类型

 

 

  进制: 二进制 十进制 八进制 16进制 60进制

    八进制 16进制转换为十进制: 0表示八进制 0x表示16进制
      例子:
        int d=01010;--> 8^3+8^1=520
        int f=0x1010;--> 16^3+16^1=4012


  基本数据类型的数据类型的转换:

      隐式数据类型的转换    强制类型的转换
        小-->大          大-->小
        byte a=10;       int a=10;
        int b=a;        byte b=(byte)a;

  类型转换可能会出现的问题:

    例子:
      int a=300;
      byte b=(byte)a; --->b=44

    原理: int: 32位
          300:000000....100101100

        byte: 8位

           截取后  300变为 00101100 (截取又为高位截断)

    第一位 符号位: 0 代表整数 1 负数

    例子:

      int a=200;
      byte b=(byte)a;---->b=-56

      原理:int : 00000...11001000
         byte: 截取后得到  11001000(这个数是补码)
                原码:10111000

      截取其实获得的是补码 正数的补码和原码一致 负数的原码=(补码-1) 取反

    获得int类型的二进制信息 String s=Integer.toBinaryString(a);


  位运算: 按照二进制进行操作

    与 &
    int a=12; 01100
    int b=15; 01111 与 (都是1返回1,其他返回0)
    int c=a&b; 01100
       结果c=12;
    或 |
    int a=12; 01100
    int b=15; 01111 或 (有一个1返回1,都是0返回0)
    int c=a|b; 01111
      结果c=15;
    按位异或 ^
    int a=12; 01100
    int b=15; 01111 异或 (相同返回0,不同返回1)
    int c=a^b 00011
      结果c=3;
    按位取反 ~
    int a=12;  00000....01100
    int b=~a;  11111....10011 取反 这是补码
          10000....01101 得到原码
      结果b=-13
    左移 <<
    int a=12;    0000...001100
    int m=a<<2;00...00110000 左移就是右边补零
      结果m=48
    右移 >>
    int a=12;    0000...001100
    int m=a>>2;000000...0011 右移就是左边补0或1

      如果是负数 左移和右移操作的是补码 要先转换为补码

 

  三目运算符:
    变量 = 表达式(boolean)?x:y;

    表达式返回的值为true时 x赋值给变量 返回的值为false时 y赋值给变量

  逻辑运算符:返回值 boolean类型
    短路的   不短路的
    &&   与   & 与
    ||  或   | 或

    &&: 表达式a  && 表达式b 结果
        true   true   true
        false   true   false
        true   false   false
        false   false   false

    ||: 表达式a && 表达式b 结果
        true   true   true
        false   true   true
        true   false   true
        false   false   false

    ! 非

 

证明||  && 是短路  | &是非短路的代码:

package com.guigu.test;

public class Test4 {
    
    public static void f1(){
        int a=100;
        int b=200;
        int c=10;
        
        boolean result=(a>90) || (++b>300) || (++c==10);
        
        System.out.println(result);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
    
    public static void f2(){
        int a=100;
        int b=200;
        int c=10;
        
        boolean result=(a>90) && (++b>300) && (++c==10);
        
        System.out.println(result);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
    public static void f3(){
        int a=100;
        int b=200;
        int c=10;
        
        boolean result=(a>90) & (++b>300) & (++c==10);
        
        System.out.println(result);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
    public static void f4(){
        int a=100;
        int b=200;
        int c=10;
        
        boolean result=(a>90) | (++b>300) | (++c==10);
        
        System.out.println(result);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
    
    public static void main(String[] args) {
        
        f1();
        System.out.println("-------------------------");
        f2();
        System.out.println("-------------------------");
        f3();
        System.out.println("-------------------------");
        f4();
    }

}

  输出结果为:

true
100
200
10
-------------------------
false
100
201
10
-------------------------
false
100
201
11
-------------------------
true
100
201
11

结论:&&当前面有一个为false时后面的就不执行了直接输出false    ||当前面有一个为true时后面的就不执行了直接输出true

   & 和 | 是全部都会执行一次的     

 

 

  流程控制:

    顺序执行: 代码 从上到下执行

      分支: if if..else if...else if..else switch()

      循环:for while do...while()

    分支:   if(表达式 或者boolean变量){}
        if(){}else
        if(){}else if(){}

        swich(值的类型):
          参数可以传入 byte short int char    jdk1.7 之后可以判断string

        switch(a){

case 'A':
    System.out.println();//这里是判断成功后要执行的东西
    break;//一定要跳出不然会一直执行下去
case 'B':
    System.out.println();
     break;
.......//各种case

default://其他的意思
    System.out.println(result);
    break;


   循环 迭代 遍历(是一个意思) :

      for(表达式1;表达式2;表达式3){
          循环体语句
      }

执行过程:
开始先执行表达式1,但是他只执行一次,
然后执行表达式2返回一个boolean类型的值,
  如果表达式2为真则执行循环体语句,
  然后执行表达式3,
后面再重复表达式2的操作,
如果表达式2为假那么退出循环。

 

while(表达式或者boolean变量){

   循环体
}

控制循环的执行:

  break; //跳出当前的循环体
  continue;//结束本次循环 执行下一次循环
  return; // 代表的是方法的结束


    题目:打印一个9*9乘法表

public class Test5 {
	
	public static void main(String[] args) {
		
		for(int i=1;i<=9;i++){
			for(int j=1;j<=i;j++){
				System.out.print(j+"*"+i+"="+j*i);
				if(i*j>=10){
					System.out.print("   ");
				}else{
					System.out.print("    ");
				}
			}
			System.out.println();
		}
		
	}

  

 

posted on 2016-05-30 16:38  cch_java  阅读(148)  评论(0编辑  收藏  举报

导航