Java语法基础

一、注释

  java注释用来解释代码的作用,可以增强代码的可读性。在javac编译的时候,不会编译注释。

  单行注释:// 注释一行

  多行注释:/* */ 可以注释多行

  文档注释:/** */可以注释多行,一般写在类、方法、成员变量上方,通过javadoc命令,可以将注释内容生成文档。

  注意:多行注释可以嵌套单行注释,不能嵌套多行注释,单行注释不能嵌套多行注释。

二、标识符

  标识符就是给类、方法、变量等取的名字。

  规则:

  1. 只能由 数字、字母、_(下划线)、$(美元符)组成,但是数字不能开头。(其实中文、日文也可以,但是不要用)
  2. 不能使用java关键字(已经被赋予特殊含义)、保留字(将来可能被赋予特殊含义)作为标识符
  3. 不建议使用java中已经定义好的类作为我们的类名
  4. 建议:使用驼峰式写法;类名首字母大写、方法名变量名首字母小写。如:类UserName;方法getUserName();变量userName

三、变量

  变量即是一个容器,可以保存数据,在同一时间只能保存一个数据。

  步骤:

  1. 声明变量 :数据类型 变量名;如 int age;
  2. 给变量赋值:可以先定义在赋值;也可以声明的同时赋值 ;
  3. 使用数据:可以打印;赋给另一个变量;参与运算;作为参数传递

  注意:

class Demo {
    static int a;
    a=2;//报错,在声明成员变量时,要么声明的同时赋值,要么在方法中赋值,在类中不能这样操作
    public static void main(String[] args) {
        System.out.println(a);
    }
}

  分类:成员变量:声明在类中,如果没有初始化,系统会分配默认值,作用范围是整个类

     局部变量:声明在方法、形参、代码块中,使用前必须初始化,作用范围是局部区域(如:方法内部),且只能声明的变量下方使用

四、基本数据类型

  8种基本数据类:byte、short、int、long、float、double、char、boolean

  整数型:

    byte:1byte

    short:2byte

    int:4byte(默认类型)

    long:8byte;定义时在数字后方加L,否则是默认的int类型通过隐式类型转换成long型

  浮点型:

    float:4byte;定时时在数字后加F,否则是默认的double类型,将报错无法从高精度赋值给低精度类型

    double:8byte(默认类型)

  字符型:char 2byte (没有负数,0~到65535,默认字符空,即u0000,注意转义字符的使用“ ”表示回车换行)

  布尔型:1bit,true 和 false(默认),注意:不能当做0和1参与运算

  注意:a+b做某种运算,如果a、b中有double,结果类型就是double;如果有float,结果类型就是float;如果有long,结果类型就是long,除此之外都是int(byte、short、char、int)

五、数据类型转换

  byte    short (char)   int   long  float  double

  ------从左到右,精度由低到高------------>

  隐式类型转换:精度低的类型将值赋给精度高的类型,如double dou=10;int型的值赋给byte,short,char,并且不超过他们的范围时,如:byte b=10;char c=99;

  强制类型转换:将精度高的类型的值赋给精度低的,有溢出风险,溢出时不断进位,直到该类型能容纳该数据。如:int a=10;byte b=(byte)a;

六、运算符

  赋值运算符:= += -=  *= /= %=

    注意:

class Demo {
    public static void main(String[] args) {
        //byte by=1;
        //by=by+1;//报错,不能将高精度int,赋给低精度byte
        by+=1;//这种方式会自动的强制类型转换,有点像自增自减也不会报错
        System.out.println(by);
    }
}

  算数运算符:+ - * / %(取余) 注意:“+”两边至少有一边出现字符串时,“+”将作连接符使用,左边有运算会进行运算,右边不会参加运算,直接连接(除非使用()提升优先级)

  自增自减运算符:++ --

    a++:第一步:将a的值取出赋给a++这个整体;第二步:将a的值加1

    ++a:第一步:将a的值加1;第二步将a的值取出赋给++a这个整体

    注意:

class Demo2 {
    //这是考题,但是实际开发中不能这样写
    public static void main(String[] args) {
        int a = 3;
        a = a++;
        System.out.println("a="+a);  //3 
        int b = 3;
        b = ++b;
        System.out.println("b="+b);   // 4

        byte c=1;
        c=c++;//没有报错,按理说不能由高精度int,赋给低精度byte,
        //所以推测这里应该是自动进行了强制类型转换
        System.out.println(c);
    }
}

  比较运算符:== 、!=、>、<、>=、<=、instanceof(判断一个对象是否是某种类型);比较出来的结果是布尔类型

    注意:“==”比较基本数据类型比较的是值,比较引用数据类型时比较两个对象的地址

       instanceof不能用来判断基本数据类型

  逻辑运算符:&、 &&(左边为false短路)、 |、 ||(左边为true短路)、 !

  位运算符:&、|、~(取反)、 ^(异或)、 >>、  <<

    注意:~(取反)公式是:-(值+1),例如~3=4、~-4=3

       n<<m  -->  n*2^m:如果是整数,右边补0;如果是负数右边补1

       n>>m  -->  n/2^m:如果是正数,左边补0,;如果是负数左补1;

       n>>>m  -->  n/2^m:无符号右移,左边永远补0,所以n为负数没有意义

  三元运算符:语法格式:X ? Y : Z

    注意:X为布尔值或布尔表达式,只有YZ类型相同时,结果才能被接收;YZ可以是不同类型,但只可以被打印输出;

        三目运算符可以嵌套使用:如(a<b?a:b)?c(a<b?a:b):c;//求三个数的最小值

//求三个数的最小值
public
static int getMin(int a,int b,int c){ int min=a<b?a:b;//获取a、b最小值 min=min<c?min:c;//将a、b中最小值和c比较 return min; }
原文地址:https://www.cnblogs.com/zwcnblog/p/9804040.html