Java基本语法

Java基本语法

注释

Java中的三种注释

  1. 单行注释:只能注释一行文字

    格式://注释内容

  2. 多行注释:可以注释一段文字

    格式:/* */两个星号中间加注释内容

  3. 文档注释

    格式:/** */中间加注释内容

public class HelloWorld {
   public static void main(String[] args) {
       //输出一个Hello,World!
       System.out.println("Hello,World!");
  }
}
/*123123*/
/** 作者:蓝雨霏 */
  1. 养成书写注释的习惯

  2. 注释不会被执行,只起解释作用

  3. 平时写代码一定要规范

标识符

关键字(都不能再用来取文件名)

image-20210922102815318

标识符的含义

Java所有的组成部分都需要名字。类名,变量名以及方法名都被成为标识符。

public class HelloWorld {                                  #class描述类名,此处类名为 HelloWorld 
   public static void main(String[] args) {               #方法名为main
       //输出一个Hello,World!
       String student="Tom";                            #变量名为student
       System.out.println("Hello,World!");
  }
}

标识符注意点

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始

  • 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合(特殊符号除外:%,#等)

  • 不能使用关键字作为变量名或方法名。

  • 标识符是大小写敏感的(Man与man就是两个标识符)

  • 合法标识符举例:age、$salary、_value、__1_value

  • 非法标识符举例:123abc、-salary、#abc、n#

  • 可以使用中文命名,但是一般不建议使用,也不建议用拼音,很low

image-20210920212731361

数据类型

强类型语言(Java,c,c++等)

要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

弱类型语言(JS等)

Java的数据类型分类

  1. 基本类型(primitive type)

    image-20210922083941159

     //八大基本数据类型
           //整数
           int num1 = 10;//最常用
           byte num2 = 20;
           short num3 = 30;
           long num4 = 30L;//Long类型要在数字后面加个L
           //浮点数:小数
           float num5 = 10.2F;//float类型要在数字后面加个F
           double num6 = 31.23;
           //字符(“内只能有一个字)
           char num7 = 'f';
           //字符串,String不是关键字,是类
           //String name = "ui";
           //布尔值:是非
           boolean num8 = true;
  2. 引用类型(reference type)

    类,接口,数组

拓展

  1. 整数:进制 二进制0b 十进制 八进制0 十六进制0x

    public class Demo3 {
       public static void main(String[] args) {
           int i1 = 10;
           int i2 = 0b10;
           int i3 = 010;
           int i4 = 0x10;
           System.out.println(i1);
           System.out.println(i2);
           System.out.println(i3);
           System.out.println(i4);

      }
    }
    运行结果:
    10
    2
    8
    16

     

  2. 浮点数扩展(???)

      float f = 0.1f;
           double d = 1.0/10;
           System.out.println(f==d);
           float d1 = 23244444f;
           float d2 = d1+1;
           System.out.println(d1==d2);
    运行结果:
    false
    true

     

    • float 有限,离散,舍入误值,大约,接近但不等于

    • BigDecimal 数学工具

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

  3. 字符扩展

     char c1 = 'a';
           char c2 = '中';
           System.out.println(c1);
           System.out.println((int)c1);  //强制转换
           System.out.println(c2);
           System.out.println((int)c2);    //强制转换
           char c3 = '\u0061';
           System.out.println(c3);
    运行结果
    a
    97

    20013
    a

     

  4. 转义字符

    • \t制表符

    • \n换行

    • ……

    System.out.println("Hello\tWorld");
    System.out.println("Hello\nWorld");
    运行结果
    Hello World
    Hello
    World
  5. 对象 从内存分析

    String sa = new String("hello world");
    String sb = new String("hello world");
    System.out.println(sa==sb);
    String sc = "hello world";
    String sd = "hello world";
    System.out.println(sc==sd);
    运行结果
    false
    true
  6. 布尔值

    • 代码要精简易读

    boolean flag = true;
    if (flag==true){}//新手
    if (flag){}//老手

类型转换

运用原因

  1. 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

  2. 运算中,不同类型的数据先转换为同一类型,然后进行运算

  3. 数据类型从低到高排序:

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

强制转换

  1. 格式:(类型)变量名

     int i = 128;
    byte b = (byte)i;//内存溢出,byte【-128~127】,导致结果为-128

    System.out.println(i);
    System.out.println(b);
    运行结果
    128
    -128
  2. 属于从高到低的转换

自动类型转换

  1. 无格式

    int j = 134;
    double y = j;
    System.out.println(j);
    System.out.println(y);
    运行结果
    134
    134.0
  2. 属于从低到高的转换

注意点

  • 不能对布尔值进行转换

  • 不能把对象类型转换为不相干的类型

  • 在把大容量转换到低容量的时候,强制转换

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

System.out.println((int)23.7);    //精度问题
System.out.println((int)-45.89f);
运行结果
23
-45
//操作比较大时,注意溢出问题
//JDK新特性,数字之间可以用下划线分割,下划线不会被输出
int money = 10_0000_0000;
System.out.println(money);
运行结果
1000000000
   
int money = 10_0000_0000;
int year = 20;
int total =money*year;
System.out.println(total);
运行结果
-1474836480   //计算时溢出

错误示范:
       int money = 10_0000_0000;
       int year = 20;
       int total = money*year;
       long total2 = money*year;   //默认是int,转换之前已经存在问题
       System.out.println(total2);
       运行结果
       -1474836480
正确示范:
       int money = 10_0000_0000;
       int year = 20;
       int total = money*year;
       long total3 = money*((long)year);//改变一个数即可
       System.out.println(total3);
       运行结果
       20000000000

变量

含义

  • 可以变化的量是变量

  • Java是一种强类型语言,每一个变量都必须声明其类型

  • Java变量是程序中最基本的存储单元,其要素包含变量名,变量类型和作用域

注意事项

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型

  • 变量名必须是合法的标识符

  • 变量声明是一条完整的语句,因此每一个声明必须以分号结束

格式

数据类型 变量名 = 值;(可以使用逗号隔开来声明多个同类型变量,不过不建议这样写)

        int a=1,b=2,c=3;   //考虑到程序可读性,不建议这样写,最好一个变量一行
       String name = "jixinru";
       char x = 'x';
       double p = 3.14;

变量作用域

  • 类变量:

    在类中

    带static关键词

    写了就可以直接使用

  • 实例变量:

    在方法的外面类的里面,从属于对象。

    如果不进行初始化,则数值类型默认值为0或0.0,字符串变量默认u0000,布尔值默认false,除了基本类型其余的默认值都是null

    写了不能直接用

  • 局部变量:

    在方法内内,使用前必须声明和初始化值。

    写了就可以直接用

    public class Demo7 {
       //变量类
       static double salary = 2500;

       //实例变量
       String name;
       int age;


       //main方法
       public static void main(String[] args) {
           //局部变量,只有在方法内i的值才有意义,即这个方法的{}内
           int i = 10;
           System.out.println(i);

           //接上面实例变量
           Demo7 demo7 = new Demo7();//变量类型为Demo7本身 变量名字 = new Demo7
           System.out.println(demo7.age);
           System.out.println(demo7.name);

           //类变量
           System.out.println(salary);
      }

    }
    运行结果
    10
    0
    null
    2500.0

     

常量

概念

  • 常量:初始化后不能再改变值!不会变动的值

  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变

  • 常量名一般使用大写字符

格式

final 数据类型 常量名=值;

public class Demo8 {

   static final double PI = 3.14;
   //final static double PI = 3.14;两种格式都可以,修饰符不存在先后顺序(变量类型前面的都是修饰符)
   public static void main(String[] args) {
       System.out.println(PI);
  }
}

变量的命名规范

  1. 所有变量、方法、类名:见名知意

  2. 类成员变量:首字母小写和驼峰原则:lastName 除了第一个单词以外,后面的单词首字母大写

  3. 局部变量:首字母小写和驼峰原则

  4. 常量:大写字母和下划线:MAX_VALUE

  5. 类名:首字母大写和驼峰原则:GoodMan

  6. 方法名:首字母小写和驼峰原则:runRun()

运算符

算数运算符:

  • +,- ,*,/,%,++,--

  • %取余,模运算

  • ++ -- 自增,自减

  • n++先赋值,再自增 ; ++n先自增,再赋值

  • 运算中,byte,short,char在运算时是自动转换为int类型的,而int和long运算时是自动转换为long型。float与double运算时是自动转换为double类型的,int与float运算时先转换为float。

        //+,- ,*,/,%二元运算符
       //Ctrl+D :复制当前行到下一行
       int a = 10;
       int b = 20;
       int c = 25;
       int d = 25;
       System.out.println(a+b);     //30
       System.out.println(a-b);     //-10
       System.out.println(a*b);     //200
       System.out.println(a/(double)b);   //结果为小数,转换一个数为浮点型 0.5
       System.out.println(d%a);     //5

       // ++,--一元运算符
       int a = 3;    
       int b = a++;  //执行完这行代码后,先给b赋值,再自增  
       //a=a+1
       int c = ++a;  //执行完这行代码前,先自增,再给c赋值  

       System.out.println(a);  //5
       System.out.println(b);  //3
       System.out.println(c);  //5
        long a = 123123123123123L;
       int b = 123;
       short c = 10;
       byte d = 8;
       System.out.println(a+b+c+d);//Long   123123123123264
       System.out.println(b+c+d);//Int   141
       System.out.println(c+d);//Int   18

 

赋值运算符:

  • =

关系运算符:

  • <, >, >=, <=, ==, !=(不等于),instanceof

        //关系运算符返回的结果:正确,错误     布尔值
       int a = 10;
       int b = 20;
       System.out.println(a>b);    //false
       System.out.println(a==b);    //false
       System.out.println(a!=b);    //true

 

逻辑运算符:

  • &&(与), ||(或), !(非)

  • 短路运算 在&&(与)运算中如果第一个数为假则不进行下面的运算

        // 与  或  非(取反)
       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);  //false
       System.out.println(c);  //5 没有进行c++运算

 

位运算符:

  • &(与), |(或), ^(异或), ~(取反), >>(右移), <<(左移), >>>(逻辑右移)

A = 0011 1100 B = 0000 1101

A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~B = 1111 0010

  • &全部相同为1,其余为0

  • |全部都是0为0,其余为1

  • ^相同为0,不同为1

  • ~原来为0就为1,原来为1就为0

  • 右移>> 相当于除以二

  • 左移<< 相当于乘以二

  • 逻辑右移>>> 若是正数则与右移相同

    0000 0000    0
    0000 0001   1
    0000 0010   2
    0000 0011   3
    0000 0100   4
    0000 1000   8
    0001 0000   16
    System.out.println(2<<3);  //16

条件运算符:

  • ? :

  • x?y:z

  • 如果x==true,则结果为有y,否则结果为z

    int score = 80;
   String type = score <60?"不及格":"及格";
   System.out.println(type);                 //及格

扩展赋值运算符:

  • +=, -=, *=, /=

  • 字符串连接符 :当字符串出现在前面时则把其它值也看为字符串。如果字符串在最后,则正常运算

int a = 10;
int b = 20;
a+=b;//a=a+b
System.out.println(a);//30

//字符串连接符        
System.out.println(""+a+b);  //3020
System.out.println(a+b+"");  //50
System.out.println(a+""+b);  //3020

其它补充

        //幂运算     Math.pow(指数,幂)
       double pow = Math.pow(2, 3);
       System.out.println(pow);   //8.0

优先级

img

Java表达式可能存在多个运算符,运算符之间存在优先级的关系,级别高的运算符先执行运算,级别低的运算符后执行运算,下表列出了运算符的优先级。表中优先级栏,数字越小优先级越高,每个运算符用中文顿号分割。

包机制

含义

为了更好地组织类,Java提供了包机制,用于区分类名地命名空间,包的本质就是文件夹

格式

  1. 语法格式:

    • 定义包:package pkg1[. pkg2[. pkg3]];

    • 导入包:import package1[.package2...].(classname|*);

    • 定义包在导入包上面

  2. 命名格式:一般利用公司名倒置作为包名

    例如:com.baidu.www

  3. 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可以完成此功能

快捷导入

格式:import package1[.package2...].*;

可以直接导入该包下的所有类的代码。

JavaDoc

作用

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

参数信息

  • @author作者名

  • @version版本号

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

  • @param参数名

  • @return返回值情况

  • @throws异常抛出情况

/**
* @author Lanyufei
* @version 1.0
* @since 1.8
*/
public class Demo9 {
   String name;  //属性

   /**
    *
    * @param name
    * @return
    * @throws Exception
    */
   public String test(String name) throws Exception{         //方法
       return name;

步骤

用命令行生成

格式:javadoc 参数 Java文件

  1. 创建一个class

  2. 在左侧选中该class右击

  3. 选中Show in Explorer

  4. 利用文件路径前面加上cmd快捷打开cmd

  5. 输入命令javadoc -encoding UTF-8 -charset UTF-8 (class名称).java

编码 类型 字符级 类型

D:\java.3\code\JavaSE\基础语法\src\base>javadoc -encoding UTF-8 -charset UTF-8 Demo9.java
正在加载源文件Demo9.java...
正在构造 Javadoc 信息...
标准 Doclet 版本 1.8.0_202
正在构建所有程序包和类的树...
正在生成.\base\Demo9.html...
Demo9.java:12: 警告: @author 没有说明
    * @author
      ^
Demo9.java:13: 警告: @param 没有说明
    * @param name
      ^
Demo9.java:14: 警告: @return 没有说明
    * @return
      ^
Demo9.java:15: 警告: @throws 没有说明
    * @throws Exception
      ^
正在生成.\base\package-frame.html...
正在生成.\base\package-summary.html...
正在生成.\base\package-tree.html...
正在生成.\constant-values.html...
正在构建所有程序包和类的索引...
正在生成.\overview-tree.html...
正在生成.\index-all.html...
正在生成.\deprecated-list.html...
正在构建所有类的索引...
正在生成.\allclasses-frame.html...
正在生成.\allclasses-noframe.html...
正在生成.\index.html...
正在生成.\help-doc.html...
4 个警告
  1. 点击目录中生成的index.html

  2. 打开生成的文档

用IDEA生成

  1. 打开IDEA,点击Tools->Generate JavaDoc

  2. 在Output directory处输入目录位置

  3. 在Locale处输入 zh_CN

  4. 在Other command line arguments 输入 -encoding UTF-8 -charset UTF-8

  5. 点击OK

  6. 点击目录中生成的index.html

  7. 打开生成的文档

posted @ 2021-09-26 21:11  蓝雨霏  阅读(238)  评论(0编辑  收藏  举报