2020.7.22-7.23java基本语法

Java基础语法

一.注释

注释是不会被执行的,是写给我们写代码的人看的,养成书写注释是一种好习惯

  1. 单行注释//
  2. 多行注释/**/
public class Annotation {
    public static void main(String[] args){
       System.out.print("Hello World!");//打印Hello World!(单行注释)
}
}public class Annotation {
    public static void main(String[] args){
       System.out.print("Hello World!");//打印Hello World!(单行注释)
}
}
 /*(多行注释)
                           _ooOoo_
                          o8888888o
                          88" . "88
                          (| -_- |)
                          O\  =  /O
                       ____/`---'\____
                     .'  \\|     |//  `.
                    /  \\|||  :  |||//  \
                   /  _||||| -:- |||||-  \
                   |   | \\\  -  /// |   |
                   | \_|  ''\---/''  |   |
                   \  .-\__  `-`  ___/-. /
                 ___`. .'  /--.--\  `. . __
              ."" '<  `.___\_<|>_/___.'  >'"".
             | | :  `- \`.;`\ _ /`;.`/ - ` : | |
             \  \ `-.   \_ __\ /__ _/   .-` /  /
        ======`-.____`-.___\_____/___.-`____.-'======
                           `=---='
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 佛祖保佑       永无BUG
        */

二.表示符

  1. 关键字,常见的关键字如下表

标识符

  1. Java所有组成的部分都需要名字,类名、变量名、方法名都称作标识符

    注意以下几点

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

三.数据类型

  1. 数据类型基本概念:Java是强类型语言——要求变量的使用要严格符合规定,所以变量都必须先定义后使用

数据类型

public class DateType1 {
    public static void main(String[] args) {
        int num1 = 10;
        long num2 = 30L;//long类型要在数字后面加个L
        float num3 = 50.1F;//float类型要在数字后面加个F
        char name1 = 'A';//一个字符
        String name2 = "ABC";//字符串,不属于基本数据类型,String是一个类
        boolean flag1 = true;
        boolean flag2 = false;//布尔值
    }
}
  1. 一些知识拓展

    • 1bit=1位
    • 1Byte=1个字节,有8位
    • 1B=8b
    • 字符是指计算机中使用的字母、数字、字、符号
  2. 数据类型知识拓展

  • 整型拓展
public class DateType2 {
       public static void main(String[] args) {
           //整型拓展,二进制以0b开头,八进制以0开头,十六进制以0x开头,十进制照写
           int i=10;
           int j=0b1010;
           int k=012;
           int l=0x0a;
           System.out.println(i);
           System.out.println(j);
           System.out.println(k);
           System.out.println(l);
       }
   }
           System.out.printf("============================\n");
   /*输出结果
   10
   10
   10
   10 
   ============================
   */
  • 浮点型拓展
 //浮点数拓展,float定义的数是有限的,离散的,会进行舍入误差,得到的数是大约数
 public class DateType2 {
       public static void main(String[] args) {     
        float a=0.1F;
        double b=0.1;
        System.out.println(a);
        System.out.println(b);
        System.out.println(a==b);
        float c=6_6666_6666;
        float d=c+1;
        System.out.println(c);
        System.out.println(d);
        System.out.println(c==d);
    }
}
/*输出结果
0.1
0.1
false
6.6666669E8
6.6666669E8
true*/

结论:最好避免使用浮点数进行比较,银行业务计算用到“数学工具类”——BigDecimal

  • 字符拓展
public class DateType2 {
       public static void main(String[] args) {  char c1='a';
        char c2='中';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换
   }
}
/*输出结果
a
97
中
20013
*/

结论:所有的字符本质上都是数字,查看的是Unicode表

  • 布尔值拓展

    一般与if语句连用

boolean flag=ture;
if(flag==ture){
    ...
}
//与底下等效
boolean flag=ture;
if(flag){
    ...
}

四.类型转换

  1. 运算中,不同类型的数据要先转换成同一类型,然后才能进行计算,优先级如下所示(低☞高)

    byte、short、char——int——long——float——double

  2. 转换类型

  • 自动转换

    低——高

     public class DateTypeConversion {
         public static void main(String[] args) {
             int i=128;
             double j=i;
             System.out.println(i);
             System.out.println(j);
          }
     } 	
     /*输出结果
     128
     128.0
     */
  • 强制转换

    格式:(转换的类型)变量名,适用于高——低

    一些特殊的情况,可将低强制变为高,防止报错

      public class DateTypeConversion {
         public static void main(String[] args) { 
             int a=128;
             byte b=(byte)a;
             System.out.println(a);
             System.out.println(b);//出现内存溢出
             System.out.println((int)100.7);
             System.out.println((int)-100.7);
         }
     }
     /*输出结果
     128
     -128
     100
     -100
     */

注意点:不能对布尔值进行转换,转换时可能出现如上的内存溢出(出现数据溢出,数值就会出现问题)或者精度的问题

  1. 常见的错误:操作数过大时,出现溢出
int money=10_0000_0000;
int years=20;
int total1=money*years;//计算时出现溢出,int范围是正负21亿左右
long total2=money*years;//转换成long前就已经溢出
long total3=money*((long)years);//正解:把其中一个数先变为long
 System.out.println(total1);
 System.out.println(total2);
 System.out.println(total3);
/*输出结果
-1474836480
-1474836480
20000000000
*/

五.变量

  1. 基本概念

    每个变量都必须声明他的类型,它可以看成一个指定的空间

    格式:数据类型 变量名=值;

    可以用逗号隔开声明多个同类型的变量

   int a=1,b=2,c=3;2.
  1. 变量的分类

    • 局部变量
    • 实例变量
    • 类变量
public class Variable {
    //实例变量:从属对象(类),可以不用初始化
//实例变量不初始化,整型的默认值为0,浮点型默认值为0,布尔值的默认值为false,除了基本数据类型,其余的默认值为null
//局部变量必须初始化,只能用在某个方法下,此处用在main方法下
    static double salary=25_0000;//类变量声明
    String name;
    int age;//这两条为实例变量声明
    public static void main(String[] args) {
        int i=10;//局部变量声明
        Variable variable=new Variable(); //变量类型  变量名字=new 变量类型(实例变量在方法下的使用)
        System.out.println(i);
        System.out.println(variable.age);
        System.out.println(variable.name);
        System.out.println(salary);
    }
}
/*
输出结果:
10
0
null
250000.0
*/
  1. 常量

    常量是一直特殊的变量

   public class Constant {
       static final double SALARY=25_0000;
   
       public static void main(String[] args) {
           System.out.println(SALARY);
       }
   }
/*
输出结果:
250000.0
*/

变量命名规范:

  • 所有的变量都要用英文,不要拼音
  • 类成员变量与局部变量,首字母小写,后面满足驼峰原则(除了第一个单词以外,后面单词的首字母大写)如:moneySalary
  • 常量,大写字母和下划线如:MAX_SALARY
  • 类名,首字母大写和驼峰原则如:DateType
  • 方法名:首字母小写和驼峰原则:main(),mainMain()

六.运算符

  1. 运算符分类

运算符分类

  1. 各类运算符的用法
  • 算术运算符
public class Operator {
    public static void main(String[] args) {
//加减乘除、求余
        int x1=10,y1=20,z1=25;
        System.out.println(x1+y1);
        System.out.println(x1-y1);
        System.out.println(x1*y1);
        System.out.println(x1/y1);//只有整数
        System.out.println(x1/(double)y1);//得到小数
        System.out.println(z1%y1);
         }
}
/*
输出结果:
30
-10
200
0
0.5
5
*/

特别提醒:

运算时,有一个数的类型为Long/Double型,输出结果为Long/Double型;其余均为Int型,整型

很多运算会使用一些工具“类”来操作,比如幂函数

double a=Math.pow(2,3);//2^3=8
 System.out.println(a);
  • 自加自减运算
int x2=3;
int y2=x2++;//执行此代码后,先把x2的值赋于y2,x2再自增1
int z2=++x2;//执行此代码前,先把x2自增1,再把x2的值赋于z2
 System.out.println(x2);
 System.out.println(y2);
 System.out.println(z2);
/*
输出结果:
5
3
5
*/
  • 关系运算符>,==,<,!=等

经常与if语句连用

  • 逻辑运算符

与:&&,短路原则,逻辑与运算,两个为真,才为真

或:||,逻辑或运算,两个之一为真,就为真

非:逻辑非运算,真变为假,假变为真

boolean m=true;
boolean n=false;
System.out.println("m&&n:"+(m&&n));
System.out.println("m||n:"+(m||n));
System.out.println("!(m&&n):"+!(m&&n));
/*
输出结果:
m&&n:false
m||n:true
!(m&&n):true
*/

与计算的短路原则验证

int a=5,b=5;
boolean c=(a++>5)&&(b>5);//第一个条件判断结果为ture,于是继续判断第二个条件
System.out.println(c);
System.out.println(a);
System.out.printf("============================\n");
int a1=5,b1=5;
boolean c1=(b1>5)&&(a1++>5);//第一个条件运行为false,不再判断第二个条件,短路原则
System.out.println(c1);
System.out.println(a1);
/*
输出结果:
false
6
============================
false
5
*/
  • 位运算符

    &:与

    |:或

    ^:异或

    ~:取反

    <<:左移相当于乘2;>>:右移相当于除2

    /*
    A=0011 1100
    B=0000 1101
    A&B=0000 1100
    A|B=0011 0001
    ~B=1111 0010
    */
    System.out.println(2<<3);//0000 0010左移3位变为0001 0000
    /*
    输出结果
    16
    */
    
  • 扩展赋值运算符

    偷懒时可以使用+=;-=;*=;/=

    a+=b;//a=a+b
    a-=b;//a=a-b
    
  • 字符串连接符“+”

//字符串连接符“+”
       int a=10,b=20;
       System.out.println(a+b);
       System.out.println(" "+a+b);//
       System.out.println(" "+(a+b));
       System.out.println(a+b+" ");
/*
输出结果:
30
 1020
 30
30 
*/
  • 三元运算符

    //三元运算符:   x?y:z如果x==ture,则结果为y,否则为z
            int score=80;
            String mark=score<60?"fail":"success";
            System.out.println(mark);
    /*
    输出结果:
    success
    */
    

七.Java包机制

  1. 包机制本质上就是文件夹

  2. 他是一种倒置放置方法

    如:www.baidu.com

    在java包机制中就是:com.baidu.www

  3. 包语句的语法格式:

    package pkg1[.pkg2[.pkg3]];

    • 操作方法:点击scr,右键new一个package,命名为com.lyj,同样的操作new一个package,命名为com.lyj2,然后将之前写的java文件放入lyj的文件夹,可出现下图

      包机制

      这样子做可以将两个名字相同java文件放到不同的文件夹中,方便管理

      点开一个java文件会出现最上面一个语句,这个语句不能删除,代表的是这个“包”下面的一个“类”

      包机制

  4. 导入包的语法格式为

import package1[.package2.(classname|*)]

  • 有时候要用到其他“类”,就要导入其他的包,点击该类,Ctrl+Alt,会提示你导入你需要的包,package语句下方便会出现import语句

  • 又或者你要引入lyj下的Variable这个类可以在package语句下打:

import com.lyj.Variable;就可以引用了

  • 如果包内文件过多,可以利用下语句,将包内的类全部引用

import com.lyj.*;

八.JavaDoc

  1. javadoc命令是用来生成自己的API文档的

  2. 参数信息可以为

    @author 作者名

    @version 版本号

    @since 指明需要最早使用的jdk版本

    @param 参数名

    @return 返回值情况

    @throws 异常抛出情况

posted @ 2020-07-23 22:34  维他命D片  阅读(111)  评论(0编辑  收藏  举报