Java基础语法

Java基础语法

注释

单行注释 //后加注释内容

多行注释 /* 加注释内容 */

文档注释JavaDoc /** 加内容 */

标识符

关键字

注意点

  • 标识符都应该以字母(A-Z或a-z),美元符($),或下划线(_)开始
  • 首字符后可以是字母(A-Z或a-z),美元符($),下划线(_)或数字的任何组合
  • 不能使用关键字作为变量名或方法名
  • 标识符是大小写敏感的

数据类型

  • 强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义再使用 -java,c++
  • java的数据类型分为两大类
  1. 基本类型:

    a.数值类型

    ​ 整数类型:byte占1个字节范围

    short占2个字节范围

    int占4各字节范围,最常用

    long占8个字节范围,常在数字后加L

    ​ 浮点类型:float占4个字节,常在数字后加F

    double占8个字节

    ​ 字符类型:char占2个字节,只能用单引号;string不是关键词,它是一个引用类型,只能跟双引号

    b. boolean类型:占1位,只含true或false

  2. 引用类型:

    a.类

    b.接口

    c.数组

字节与位

  1. 位(bit):计算机内部最小储存单位,11001100是一个八位二进制数
  2. 字节(byte):计算机中数据处理的基本单位,常用B表示
  3. 1B=8bit
  4. 字符:计算机中使用的字母,数字,字和符号

整数拓展

//二进制:0b开头
//十进制:生活中的数
//八进制:0开头
//十六进制:0x开头
int i=10;	//输出10
int i=010;	//输出8
int i=0x10;	//输出16
int i=0x11;	//输出17

浮点数拓展

float,double类型是有限字长,数据是离散的,存在舍入误差,只是大约数据,接近却不等于

最好完全避免使用浮点数进行比较

数据比较一般使用BigDecimal类

字符拓展

char c1='a';
char c2='中';
System.out.println((int)c1);
//此时输出97
System.out.println((int)c2);
//此时输出20013

(int)c这一步骤是对字符进行强制转换,操作方法为(类型)变量名

所有的字符本质还是数字

底层编码:Unicode表(例;97=a,65=A),2个字节,表示范围0~65536

转义字符:1.\t 制表符

​ 2.\n 换行 ........

布尔值扩展

boolean flag=true;
if( flag=true);{}
if( flag);{}

这两个if语句是完全等价的,默认进行判断

类型转换

  • java是强类型语言,在有些运算时需要类型转换

不同类型的数据应该转为同一类型,再进行运算

  • 低-------------------------------------------------------------------------高(容量)

byte,short,char------>int------>long------>float------>double

  • 强制转换 (类型)变量名 高--->低

    自动转换 低--->高

  • 注意点

    1.不能对布尔值进行转换

    2.不能把对象类型转换为不相干类型

    3.在把大容量转换为低容量时需要强制转换,反之不用

    4.转换的时候可能存在内存溢出,或者精度问题

    int i=128;
    byte b=(byte) i;
    System.out.println(i);			//此时i输出128
    System.out.println(b);			//此时b输出-128
    

    (byte) i;这一步发生内存溢出,因为byte类型最高到127,应避免出现内存溢出

    System.out.println(23.4);			//此时输出23.4
    System.out.println((int)23.4);		//此时输出23
    System.out.println(-45.86f);		//此时输出-45.86
    System.out.println((int)-45.86f);	//此时输出-45
    

    在进行浮点数转换时出现精度问题*

    5.操作比较大的数的时候,注意溢出问题

    int a=20_0000_0000;                 //JDK7新特性,数字之间可以用下划线分隔
    int b=30;
    int c=a*b;
    		System.out.println(c);				//此时输出-129542144,出现溢出问题
    long d=a*b;
            System.out.println(d);				//输出-129542144,因为定义a,b时为int类型,所以											在转换之前已经溢出
    long e=a*(long)b;
            System.out.println(e);				//输出60000000000,在计算前先将int类型强制转化												为long类型,强制转换对a或b或全部都可
    

变量

  • 理解:变量类比于一片空间或位置,而值类比于空间中的东西

  • java是强类型语言,每个变量都必须声明类型,类型可以是基本类型,也可以是引用类型

  • java变量是最基本的储存单元,其要素包括变量名,变量类型和作用域

    变量作用域包括类变量实例变量局部变量

    public class Demo1 {            //这是一个类----Demo1
    
       static double salary=2500;      // 类变量,数据类型前加static,从属于类,和类一起存在消失
    
        String name;
        int age;                     //实例变量,作用于具体类中,具体方法外,从属于对象
        boolean question;
    
        public static void main(String[] args) {        //这是一个main方法
            int a=10;                   //局部变量,作用于具体方法中,离开此方法则失效
            //变量类型  变量名字   具体值
            Demo1       demo1   = new Demo1();                 //要在方法中用实例变量必须如此
                                                                // 快捷键alt+回车
            System.out.println(demo1.age);              //输出0,因为没给赋初始值,会变为默认值
            System.out.println(demo1.name);             //输出null,同样原因
            System.out.println(demo1.question);         //输出false,
        }
        
        public void add() {                          //其他方法,add方法
            System.out.println(salary);               //不用采取实例变量那种操作,直接可以输出
        }
        
    }
    

常量

  • 初始化后不能再改变值!
  • 常量可以理解为一种特殊变量,其值被设定后,在程序运行过程中不允许被改变
final 常量名=值;
例    final int A=3;
  • 常量名一般使用大写字符

命名规范

  • 所有的变量,方法,类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary
  • 局部变量:首字母小写和驼峰原则:monthSalary
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:MonthSalary
  • 方法名:首字母小写和驼峰原则:add(),addMoney()

运算符

  • 算术运算符:+, -, *, /, %(取余,叫做模运算), ++, --

    • 除法运算时可能会产生小数,故需要强制转换
  • 在加法运算中,不同类型的数据相加,在含有long类型时,输出默认为long类型;反之都为int类型

    • b=a++:先把a赋值给b,a再自增
  • b=++a:a先自增,再赋值给b

  • 很多运算,我们会使用一些工具类来操作,例如Math类

  • 辅助运算符:=

  • 关系运算符:>, <, >=, <=, ==(等于), !=instanceof 返回值为boolean值,即true,fse

  • 逻辑运算符:&&, ||, !

    boolean a=true;
    boolean b=false;
            System.out.println(a && b); 	//输出false
    										//与运算:同真得真
            System.out.println(a || b);     //输出true
    										//或运算:有真得真
            System.out.println(a && b);     //输出true
    										//非运算:真假假真
    

    与运算中的短路运算

    int c=5;
    boolean d=(c<4) && (c++<4);
            System.out.println(d);
            System.out.println(c);
    输出
    false    //第一步中c=5已经小于4,直接省去第二步,输出false
    5		 //如果没有省,则c++后为6,但输出为5,故省去
    

    在与运算中,如果第一项为false,则会略去第二步,直接判定为false

  • 位运算符:&, |, ^, ~, >>, <<, >>>(了解)

    A=0011 1100
    B=0000 1101
    -----------------
     A & B=0000 1100     //与运算:同1得1
     A | B=0011 1101     //或运算:有1得1
     A ^ B=0011 0001     //异或运算:同0异1
     ~ B=  1111 0010     //非运算:0110
    

    关于左移右移得面试题

     /*
            计算机中怎样计算2*8=16最快?   2*2*2*2=16
    
          分 析: 0000 0000   0
                 0000 0001   1
                 0000 0010   2
                 0000 0100   4
                 0000 1000   8          
                 0001 0000   16          在二进制中1这一位左移一位,对应于十进制中乘以2
          结 果: 利用左移运算<<,给2左移三位,即给2乘以三个2
    */
            System.out.println(2<<3);  //输出16
    /*
          结 论:<<一次对应于乘以2
                >>一次对应于除以2
    */
    
  • 条件运算符:?:

 /*
        x?y:z
        如果x=true,则输出y,否则输出z
 */
        int score1=50;
        String type1=score1<60?"不及格":"及格";
        System.out.println(type1);
//输出
不及格
        int score2=70;
        String type2=score2<60?"不及格":"及格";
        System.out.println(type2);
//输出
及格
  • 扩展赋值运算符:+=, -=, *=, /=

    a+=b;			//a=a+b
    a-=b;			//a=a-b
    

    补充 字符串连接符

int a=10;
int b=20;
System.out.println("abc"+a+b);		//当+左端出现string类型,则会把右端的数转为													string类型,并且进行连接
//输出
abc1020
int a=10;
int b=20;						//反之,当+右端出现string类型时,左边运算则不受影响,并且进行连接
System.out.println(a+b+"abc");
//输出
30abc

可以想象成从左到右进行作用

包机制

包的本质就是文件夹

  • 为了更好地组织类,java提供了包机制,用于区别类名的命名空间
  • 包语句的语法格式为:
Package pkg1[.pkg2[.pkg3...]];
  • 一般利用公司域名倒置作为包名 例如:com.baidu.www com.li.base com.li.exercise

1605750176955

  • 为了能够使用某一个包的成员,我们需要在java程序中明确导入该包,使用"import"语句可完成

1605752292684

import com.lizhao.base.Demo02;			//在base下的Demo02中导入exercise下的Demo01
import com.lizhao.base.*;     			  //*为通配符,导入这个包下所有的类

JavaDoc----一种注释

  • javadoc命令是用来生成自己API文档的
  • 参数信息
    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的JDK版本
    • @param参数名
    • @return返回值情况
    • @throws异常抛出情况
/**
 * @author lizhao
 * @version 1.0         这段注释是加在类上边的
 * @since 1.8
 */
public class Demo01 {
    String name;

    /**
     *
     * @param name          这段注释是加在方法上边的,且是自动生成的
     * @return
     */
    public String test(String name){
        return name;

生成 javadoc文档

1.通过命令行:javadoc 参数 Java文件

1605754357041

1605754443479

1605754776506 1605754874916 1605754905559

2.通过IDEA

​ a. 点击 Tools-> Generate JavaDoc

​ b. img

posted @ 2020-11-19 11:56  JayusLz  阅读(82)  评论(0)    收藏  举报