java基本语法

基本语法

注释、标识符、关键字

注释

  • 注释定义

  • 注释不会被执行

  • 写注释是一个非常好的习惯

  • 平时写代码一定要规范

注释分类

  • 单行注释

  • 多行注释

  • 文档注释

 1 public class Hello {
 2     public static void main(String[] args) {
 3         //单行注释 //
 4         //这是一个注释,不运行
 5         System.out.println("Hello World!");
 6         //多行注释 /* */
 7         /*
 8         我是多行注释
 9         我是多行注释
10         */
11 
12         //JavaDoc:文档注释 有一定的功能
13     }
  • 有趣的代码注释

 1 /***
 2  * ░░░░░░░░░░░░░░░░░░░░░░░░▄░░
 3  * ░░░░░░░░░▐█░░░░░░░░░░░▄▀▒▌░
 4  * ░░░░░░░░▐▀▒█░░░░░░░░▄▀▒▒▒▐
 5  * ░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐
 6  * ░░░░░▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐
 7  * ░░░▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌
 8  * ░░▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒
 9  * ░░▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐
10  * ░▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄
11  * ░▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒
12  * ▀▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒
13  
14  * 单身狗就这样默默地看着你,一句话也不说。
15  */
  • 字节补充说明:其主要度量单位是字节,1个字节(Byte)等于8位(b)二进制。位(bit,Binary Digits):存放一位二进制数,即0或1,为最小的存储单位,8个二进制位为一个字节单位。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。英文标点占一个字节,中文标点占两个字节

     

标识符

关键字

abstractassertbooleanbreakbyte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
关键字含义
abstract 表明类或者成员方法具有抽象属性
assert 断言,用来进行程序调试
boolean 基本数据类型之一,声明布尔类型的关键字
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class 声明一个类
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中
  • Java所用的组成部分都需要名字。类名,变量名以及方法名都被称为标识符

命名规则

一、标识符命名规则

1、标识符用作给变量、方法和类命名。

2、以字母、下划线“()”和“$”符开头,后面可跟字母、下划线“_()”和“$”符或数字。

3、大小写敏感。

4、应该使用有意义的名称,达到见名知意的目的,并且长度无限制。

5、尽量不要使用中文。

6、不可以是true和false。true和false虽然不是关键字,但是有特殊用途。

7、避免与java关键字与java类库的类名重名,java关键字一共有51个

 1  public class Demo01 {
 2      public static void main(String[] args) {
 3          String Ahello="yang";
 4          String hello="yang";
 5          String $hello="yang";
 6          String _hello="yang";
 7          String _1="yang";
 8  9          //String _1#="yang";
10          //String 1hello="yang";
11          //String #hello="yang";
12      }
13  }//尽量不用中文,拼音

数据类型

强类型语言

  • 强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、Python、C++等语言。

  • 举个例子:定义了一个整数,如果不进行强制的类型转换,则不可以将该整数转化为字符串。

弱类型语言

  • 弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言。

  • 1  var A =5;
    2  var B = "5";
    3  SumResult = A +B;
    4  MinResult = A -B;

二者区别

  • 无论是强类型语言还是弱类型语言,判别的根本是是否会隐性的进行语言类型转变。强类型语言在速度上略逊于弱类型语言,但是强类型定义语言带来的严谨性又能避免不必要的错误。

Java的数据类型

  • 基本类型

    简单类型booleanbytecharshortIntlongfloatdouble
    二进制位数 1 8 16 16 32 64 32 64
    封装器类 Boolean Byte Character Short Integer Long Float Double
      是非 整数 字符 整数 整数 整数 小数 小数

    注:在IDEA中查看最大最小值,输入封装器名,选中按F4查看。

    • 引用类型

      1. 接口

      2. 数组

  • 扩展补充

    • 整数:二进制(0b),八进制(0),十六进制(0x)

    • 浮点数:(float)表示的数据有限,离散,存在舍入误差,是一个大约的数,接近但是不等于。建议:最好完全避免使用浮点数进行比较特别是银行业务,可使用BigDecimal

    • 字符:字符是用数字来编码的,所以字符的本质是数字如:Unicode编码

    • 转义字符:(\t)水平table,(\n)换行

    •  1  public class Demo03 {
       2      public static void main(String[] args) {
       3          //整数拓展   进制    二进制0b    八进制0   十六进制0x
       4          int i = 10;
       5          int i2 = 010;
       6          int i3 = 0x10;
       7  8          System.out.println(i);
       9          System.out.println(i2);
      10          System.out.println(i3);
      11 12          //=======================================================
      13          //浮点数拓展?  银行业务怎么表示? 钱
      14          //BigDecimal  数学工具类
      15          //=======================================================
      16 17          //float   有限 离散 舍入误差  大约  接近但不等于
      18          //double
      19          //最好完全避免使用浮点数进行比较
      20          //最好完全避免使用浮点数进行比较
      21          //最好完全避免使用浮点数进行比较
      22          System.out.println("===================================");
      23          float f = 0.1f;  //0.1
      24          double d = 1.0 / 10;  //0.1
      25 26          System.out.println(f == d); //flase
      27 28          float d1 = 23131313133131313131f;
      29          float d2 = d1 + 1;
      30 31          System.out.println(d1 == d2); //true
      32 33          //=======================================================
      34          //字符拓展?
      35          //=======================================================
      36          System.out.println("===================================");
      37          char c1 = 'a';
      38          char c2 = '中';
      39 40          System.out.println(c1);
      41 42          System.out.println((int) c1);//强制转换
      43 44          System.out.println(c2);
      45 46          System.out.println((int) c2);//强制转换
      47 48          //所有的字符本质还是数字
      49          //编码 Unicode 表:(97 = a  65=A) 2字节  0-65536  Excel表有2的16次方(早期的最大行数)
      50 51          //转义字符
      52          // \t  水平制表符,相当于table键
      53          //
      54          // \n 换行
      55          // \a 响铃
      56          System.out.println("===================================");
      57          System.out.println("hello\tworld!");
      58          System.out.println("hello\n  world!");
      59 60          System.out.println("===================================");
      61          String sa = new String("hello world");
      62          String sb = new String("hello world");
      63          System.out.println(sa == sb);
      64 65          String sc = "hello world";
      66          String sd = "hello world";
      67          System.out.println(sc == sd);
      68          //涉及到对象,从内存分析
      69 70          //布尔值扩展
      71          boolean flag = true;
      72          if (flag == true) {}//新手
      73          if (flag) {} //老手
      74          //less is more ! 代码要精简易读
      75      }
      76  }
    •  10
       8
       16
       ===================================
       false
       true
       ===================================
       a
       9720013
       ===================================
       hello   world!
       hello
         world!
       ===================================
       false
       true

类型转换

  • 由于Java是强类型语言,计算时需要类型转换。byte,short,char--->int--->long--->float--->double

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

  • 强制类型转换

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

    • 高到低强制转化

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

    • 不能对布尔值进行转换

  • 自动类型转换

  •  1  public class Dome04 {
     2      public static void main(String[] args) {
     3          int i=128;
     4          byte b = (byte)i;//内存溢出
     5          double d=i;
     6  7          //强制转换  (类型)变量名  高-->低
     8          //自动转换  低-->高
     9 10          System.out.println(i);
    11          System.out.println(b);
    12          System.out.println(d);
    13 14          /*
    15          注意点:
    16          1.不能对布尔值进行转换
    17          2.不能把对象类型转换为不相干的类型
    18          3.在把高容量转换为低容量的时候,强制转换
    19          4.转换的时候可能存在内存溢出,或者精度问题!
    20           */
    21 22          System.out.println("========================");
    23          System.out.println((int)23.7);//23
    24          System.out.println((int)-45.89F);//-45
    25 26          System.out.println("========================");
    27          char c='a';
    28          int e=c+1;
    29          System.out.println(e);//98
    30          System.out.println((char)e);//b
    31      }
    32  }
  •  1  public class Dome05 {
     2      public static void main(String[] args) {
     3          //操作数比较大的时候,注意溢出问题
     4          //JDK7新特性,数字之间可以用下划线分隔
     5          int money=10_0000_0000;
     6          int years=20;
     7          int total=money*years;//-1474836480,计算时溢出了
     8          System.out.println(total);
     9 10          long total2 = money*years;//默认是int,转换之前已经存在问题了。
    11          System.out.println(total2);
    12 13          long total3 = money*((long)years);//先把一个数转换为long
    14          System.out.println(total3);//200_0000_0000
    15      }
    16  }

    注意:大型数据可以用下划线分隔,方便阅读

变量、常量

  • 变量

    • 变量是什么就:就是可以变化的量!

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

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

    • 1  type   varName [=value] [{,varName[=value]}];
      2  //数据类型 变量名   = 值;可以使用逗号隔开来声明多个同类型变量(不推荐这样)
    • 1  public class Dmeo07 {
      2      public static void main(String[] args) {
      3          //int a,b,c;
      4          //int a=1,b=2,c=3;  //程序可读性差
      5          String name = "ljx";
      6          char x = 'X';
      7          double pi = 3.14;
      8      }
      9  }
    • 注意事项

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

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

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

    • 变量作用域

      • 类变量(加关键词static)

      • 实例变量

      • 局部变量

       1  public class Demo08 {
       2  3      //类变量 static
       4      static double salary = 2500;  //不用new了
       5      //属性:变量
       6  7      //实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0
       8      //布尔值:默认是false
       9      //除了基本类型,其余默认值都是null;
      10      String name;
      11      int age;
      12 13      //main方法
      14      public static void main(String[] args) {
      15 16          //局部变量:必须声明和初始化值
      17          int i = 10;
      18 19          System.out.println(i);
      20 21          //变量类型 变量名字 = new Demo08();
      22          Demo08 demo08 = new Demo08();
      23          System.out.println(demo08.age);
      24          System.out.println(demo08.name);
      25 26          //类变量 static
      27          System.out.println(salary);
      28      }
      29      //其他方法
      30      public void add(){
      31 32      }
      33  }
  • 常量

    • 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。

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

    final 常量名 =final double PI = 3.14;
    • 常量名一般使用大写字符

    1  public class Demo09 {
    2 3      //修饰符不存在先后顺序(static final)
    4      static final double PI = 3.14;
    5 6      public static void main(String[] args) {
    7          System.out.println(PI);
    8      }
    9  }
  • 变量的命名规范

    • 所用变量、方法、类名:见名知意

    • 类成员变量:首字母小写和驼峰原则:monthSalary

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

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

    • 类名:首字母大写和驼峰原则:Man,GoodMan

    • 方法名:首字母小写和驼峰原则:run(),runRun()

运算符

Java运算符:

类别符号
算数运算符 +,-,*,/,%,++,--
赋值运算符 =
关系运算符 >,<,>=,<=,==,!=,instanceof
逻辑运算符 &&,||,!
位运算符 &,|,^,~,>>,<<,>>>>
条件运算符 ? :
扩展赋值运算符 +=,-=,*=,/=
  1  package operator;
  2   3  public class Demo01 {
  4      public static void main(String[] args) {
  5          //二元运算符
  6          //Ctrl + D :复制当前行到下一行
  7          int a = 10;
  8          int b = 20;
  9          int c = 25;
 10          int d = 25;
 11  12          System.out.println(a+b); //30
 13          System.out.println(a-b); //-10
 14          System.out.println(a*b); //200
 15          System.out.println(a/b); //0
 16          System.out.println(a/(double)b); //0.5
 17      }
 18  }
----------------------------------------------------------
19 package operator; 20 21 public class Demo02 { 22 public static void main(String[] args) { 23 long a=123123121221L; 24 double e=3; 25 int b=123; 26 short c = 10; 27 byte d = 8; 28 29 System.out.println(a+b+c+d); //Long 30 System.out.println(b+c+d);//Int 31 System.out.println(c+d);//Int 32 System.out.println(e+d);//double 33 } 34 }
-----------------------------------------------------
35 package operator; 36 37 public class Demo03 { 38 public static void main(String[] args) { 39 //关系运算符返回的结果:正确,错误 布尔值 40 //if 41 42 int a = 10; 43 int b = 20; 44 int c = 21; 45 46 //取余,模运算 47 System.out.println(c%a); // c/a 21/10 = 2...1 48 49 System.out.println(a>b); //false 50 System.out.println(a<b); //true 51 System.out.println(a==b); //false 52 System.out.println(a!=b); //true 53 } 54 }
---------------------------------------------------------------
55 package operator; 56 57 public class Demo04 { 58 public static void main(String[] args) { 59 //++ -- 自增,自减 一元运算符 60 int a = 3; 61 62 int b = a++; //执行完这行代码后,先给b赋值,再自增 63 //a++ a=a+1 64 System.out.println(a); //4 65 //++a a=a+1 66 int c = ++a; //执行完这行代码前,先自增,再给c赋值 67 68 System.out.println(a); //5 69 System.out.println(b); //3 70 System.out.println(c); //5 71 72 //幂运算 2^3 2*2*2 = 8 很多运算我们用工具类来操作。 73 double pow = Math.pow(3,2); 74 System.out.println(pow); 75 } 76 }
-------------------------------------------------------------------------
77 package operator; 78 79 //逻辑运算符 80 public class Demo05 { 81 public static void main(String[] args) { 82 //与(and) 或(or) 非(取反) 83 boolean a=true; 84 boolean b = false; 85 86 System.out.println("a && b:"+(a&&b));//逻辑与,一假为假 false 87 System.out.println("a || b:"+(a||b));//逻辑或,一真为真 true 88 System.out.println("!(a && b):"+!(a && b));//真则假,假则真 true 89 90 //短路运算 91 int c = 5; 92 boolean d = (c<4)&&(c++<4); 93 System.out.println(d); //false 94 System.out.println(c); //5 95 } 96 }
-------------------------------------------------------------------------------
97 package operator; 98 99 public class Demo06 { 100 public static void main(String[] args) { 101 /* 102 A = 0011 1100 103 B = 0000 1101 104 ----------------------------- 105 A&B = 0000 1100 如果都为1才为1 106 A|B = 0011 1101 如果都为0才为0 107 A^B = 0011 0001 相同为0不同为1 108 ~B = 1111 0010 取反 109 110 2*8 = 16 2*2*2*2 111 效率极高!!! 112 << 左移 *2 113 >> 右移 /2 114 115 0000 0000 0 116 0000 0001 1 117 0000 0010 2 118 0000 0100 4 119 0000 1000 8 120 0001 0000 16 121 * */ 122 System.out.println(2<<3); //16 123 } 124 } ----------------------------------------------------------------------------------------------- ​ 126 package operator; 127 128 public class Demo07 { 129 public static void main(String[] args) { 130 int a = 10; 131 int b = 20; 132 133 a+=b; //a=a+b 134 a-=b; //a=a-b 135 136 System.out.println(a);//10 137 138 //字符串连接符 + 139 System.out.println(a+b);//30 140 System.out.println(a+b+"");//30 141 System.out.println(""+a+b);//1020 142 } 143 } 144 package operator; ​------------------------------------------------------------------------------------------------------------ 146 //三元运算符 147 public class Demo08 { 148 public static void main(String[] args) { 149 //X ? Y :Z 150 //如果x==true,则结果为y,否则为Z 151 152 int score = 89; 153 String type = score <60?"不及格":"及格"; //必须掌握 154 //if 155 System.out.println(type); //及格 156 } 157 }

包机制

  • 为了更好地组织类,java提供了包机制,用于区别类名的命名空间

  • 包语句的语法格式为

     package pkg1[.pkg2[.pkg3...]];
  • 一般用公司域名倒置作为包名

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

     import package pkg1[.pkg2[.pkg3...]];

JavaDoc

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

  • 参数信息

    • @author 作者名

    • @version 版本号

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

    • @param 参数名

    • @return 返回值情况

    • @throws 异常抛出情况

     1  package com.wendi.base;
     2  3  /**
     4   * @author wendi
     5   * @version 1.0
     6   * @since 1.8
     7   */
     8  public class Doc {
     9      String name;
    10      /**
    11       * @author wendi
    12       * @param name
    13       * @return
    14       * @throws Exception
    15       */
    16      public String test(String name) throws Exception{
    17          return name;
    18      }
    19
posted @ 2021-02-04 20:20  我爱迪迪  阅读(58)  评论(0编辑  收藏  举报