首页 > 编程语言 > 详细

Java基础语法

时间:2021-02-15 23:05:05      阅读:24      评论:0      收藏:0      [点我收藏+]

Java基础语法

 


 

1注释/标识符/关键字

1.1注释

不会被执行,是给写代码的人看

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

平时写代码要注意规范

Java注释有三种:

  1. 单行注释 line comment

    //+注释内容

    //单行注释
  2. 多行注释 block comment

    /*+注释内容

    ……………

    注释内容+*/

    /*多行注释
    多行注释
    多行注释
    多行注释*/
  3. 文档注释 JavaDoc

有趣的代码注释

eg.

/***
*               ii.                                         ;9ABH,          
*             SA391,                                   .r9GG35&G          
*             &#ii13Gh;                               i3X31i;:,rB1        
*             iMs,:,i5895,                         .5G91:,:;:s1:8A        
*               33::::,,;5G5,                     ,58Si,,:::,sHX;iH1        
*               Sr.,:;rs13BBX35hh11511h5Shhh5S3GAXS:.,,::,,1AG3i,GG        
*               .G51S511sr;;iiiishS8G89Shsrrsh59S;.,,,,,..5A85Si,h8        
*               :SB9s:,............................,,,.,,,SASh53h,1G.      
*           .r18S;..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,....,,.1H315199,rX,      
*         ;S89s,..,,,,,,,,,,,,,,,,,,,,,,,....,,.......,,,;r1ShS8,;Xi      
*       i55s:.........,,,,,,,,,,,,,,,,.,,,......,.....,,....r9&5.:X1      
*       59;.....,.     .,,,,,,,,,,,...       .............,..:1;.:&s      
*     s8,..;53S5S3s.   .,,,,,,,.,..     i15S5h1:.........,,,..,,:99      
*     93.:39s:rSGB@A; ..,,,,.....   .SG3hhh9G&BGi..,,,,,,,,,,,,.,83      
*     G5.G8 9#@@@@@X. .,,,,,,..... iA9,.S&B###@@Mr...,,,,,,,,..,.;Xh    
*     Gs.X8 S@@@@@@@B:..,,,,,,,,,,. rA1 ,A@@@@@@@@@H:........,,,,,,.iX:    
*     ;9. ,8A#@@@@@@#5,.,,,,,,,,,... 9A. 8@@@@@@@@@@M;   ....,,,,,,,,S8    
*     X3   iS8XAHH8s.,,,,,,,,,,...,..58hH@@@@@@@@@Hs       ...,,,,,,,:Gs  
*   r8,       ,,,...,,,,,,,,,,..... ,h8XABMMHX3r.         .,,,,,,,.rX:  
*   :9, .   .:,..,:;;;::,.,,,,,..         .,,.               ..,,,,,,.59  
* .Si     ,:.i8HBMMMMMB&5,....                   .           .,,,,,.sMr
* SS       :: h@@@@@@@@@@#; .                     ... .         ..,,,,iM5
* 91 .   ;:.,1&@@@@@@MXs.                           .         .,,:,:&S
* hS .... .:;,,,i3MMS1;..,..... . .     ...                     ..,:,.99
* ,8; ..... .,:,..,8Ms:;,,,...                                     .,::.83
*   s&: .... .sS553B@@HX3s;,.   .,;13h.                           .:::&1
*   SXr . ...;s3G99XA&X88Shss11155hi.                             ,;:h&,
*     iH8: . ..   ,;iiii;,::,,,,,.                                 .;irHA  
*     ,8X5;   .     .......                                       ,;iihS8Gi
*         1831,                                                 .,;irrrrrs&@
*           ;5A8r.                                           .:;iiiiirrss1H
*             :X@H3s.......                               .,:;iii;iiiiirsrh
*             r#h:;,...,,.. .,,:;;;;;:::,...             .:;;;;;;iiiirrss1
*             ,M8 ..,....,.....,,::::::,,...         .     .,;;;iiiiiirss11h
*             8B;.,,,,,,,.,.....         .           ..   .:;;;;iirrsss111h
*           i@5,:::,,,,,,,,.... .                   . .:::;;;;;irrrss111111
*           9Bi,:,,,,......                       ..r91;;;;;iirrsss1ss1111
*/
?

 

1.2 标识符和关键字


关键字

技术分享图片

 

标识符

Java所有组成部分都需要名字

类名/变量名/方法名都被称为标识符

  • 开始:A~Z/a~z/$/_/中文(不建议用)

  • 大小写十分敏感

 

2数据类型

2.1 Java:强类型语言

变量的使用严格符合规定,必须先定义才能使用

  • 安全性高,效率低

  • 1 Byte = 8 bit

     

2.2 八大基本语言类型

Java数据分为两大类

  1. 基本类型 primitive type

  • 数值类型

    • 整数类型

      • byte 1B

      • short 2B

      • int 4B

      • long 8B

    • 浮点类型

      • float 4B

      • double 8B

    • 字符类型

      • char 2B

    • boolean类型

      • true/false 2B

  1. 引用类型 reference type

    • 接口

    • 数组

public class demo02 {
   public static void main(String[] args) {
       //八大基本数据类型
?
       //整数
       byte num1 = 127;
       short num2 = 12700;
       int num3 = 12700000;//最常用
       long num4 = 127000000000L;//后面加L
?
       //小数
       float num5 = 17.7F;//后面加F
       double num6 = 3.14159;
?
       //字符
       //char name = "a";
?
       //字符串
       String name2 = "J¥ttt";
?
       //布尔值
       boolean flag = true;
  }
}
?

 

2.3 拓展

  1. 有关整数

    二进制:前缀0b

    八进制:前缀0

    十进制:无前缀

    十六进制:前缀0x

  2. 有关浮点数/小数

    原因:float:有限 离散 舍入误差 大约 接近但不等于

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

  3. 有关字符

    实质:数字

    编码:Unicode 2Bytes 65536=2^16

    转义字符:

    • \t 制表符

    • \n 换行

    • ……

  4. 有关布尔值

    if (flag)

public class demo03 {
   public static void main(String[] args) {
?
       //1.整数拓展
       int i1 = 10;//十进制
       int i2 = 0b10;//二进制
       int i3 = 010;//八进制
       int i4 = 0x10;//十六进制
       System.out.println(i1);//10
       System.out.println(i2);//2
       System.out.println(i3);//8
       System.out.println(i4);//16
?
?
       //2.浮点数拓展
?
       //例1
       float f1 = 0.1F;
       double f2 = 1.0/10;
       System.out.println(f1==f2);//x1==x2 判断是否相等 //false
       System.out.println(f1);//0.1
       System.out.println(f2);//0.1
?
       //例2
       float f3 = 528768734F;
       float f4 = f3 + 1F;
       float f5 = f3 + 1f;
       float f6 = f3 + 1;
       System.out.println(f3==f4);//true
       System.out.println(f3==f5);//true
       System.out.println(f3==f6);//true
       System.out.println(f4);//5.28768736E8
       System.out.println(f5);//5.28768736E8
       System.out.println(f6);//5.28768736E8
?
       //原因:float:有限 离散 舍入误差 大约 接近但不等于
       //最好完全使用浮点数进行比较
       //银行业务:BigDecimal 类
?
       //3.字符拓展
       char c1 = ‘a‘;
       char c2 = ‘中‘;
       char c3 = ‘♂‘;
       char c4 = ‘Π‘;
       char c5 = ‘\u9791‘;
       char c6 = ‘\u9999‘;
       System.out.println(c1);//a
       System.out.println((int)c1);//强制换行//97
       System.out.println(c2);//中
       System.out.println((int)c2);//20013
       System.out.println((int)c3);//9794
       System.out.println((int)c4);//928
       System.out.println(c5);//鞑
       System.out.println(c6);//香
       //所有的字符本质还是数字
       //编码:Unicode 2Bytes 65536=2^16
       //转义字符
         // \t 制表符
         // \n 换行
         // ……
       System.out.println("Hello World");
       System.out.println("Hello\nWorld");
       System.out.println("Hello\tWorld");
?
?
       //4.布尔值扩展
       boolean flag = true;
?
       if (flag){}//老手
       if (flag==true){}//新手
       
  }
}
?技术分享图片

3类型转换

3.1类型优先级排序

byte,short,char<int<long<float<double

3.2具体类型转换

强制类型转换——高到低

(类型名)变量名

两个问题:内存溢出问题/精度问题

自动类型转变——低到高

public class Demo04 {
   public static void main(String[] args) {
?
       //1.强制类型转换:(类型名)变量名 高到低
?
       int i = 128;
       double a = 52876.8734;
       byte b = (byte)i;
?
       System.out.println(i);
       System.out.println(b);//内存溢出问题
       System.out.println((int)a);//精度问题
?
       System.out.println("————————————————————————————————————————————————————————————————————————————————————");
?
?
       //2.自动类型转换:低到高
?
       char c = ‘$‘;
       char f = ‘1‘;
       int e = c + f;
       double d = e;
?
       System.out.println(e);//char->int 低到高自动转换
       System.out.println(d);
       System.out.println((char)d);
?
       /*
       注意点:
       1.不对布尔值进行转换
       2.不把对象类型转换为不相干类型
       3.高容量转低容量用强制转换
       4.内存溢出问题
       5.精度问题
        */
?
  }
}
?技术分享图片
public class Demo06 {
   public static void main(String[] args) {
       //JDK7新特性,数字之间可使用下划线分割
       int money = 10_0000_0000;
       int years = 20;
?
       int total = money * years;
       System.out.println(total);//-1474836480,计算溢出
?
       long total2 = money * years;
       System.out.println(total2);//仍然溢出
?
       long total3 = money * ((long)years);
       System.out.println(total3);//可,应在计算过程总升级
  }
}
技术分享图片

 

 

4变量/常量

4.1变量

变量 variable 可以变化的量

Java变量是程序中最基本储存单元,要素包含:4

变量名/变量类型/作用域

type varname = value

数据类型 变量名 = 值;

类型可以是基本类型,也可以是引用类型

 

4.2变量作用域

类变量 static

实例变量 外部

局部变量 内部

 

4.3常量

特殊变量

final 常量名 = 值

常用大写字符

 

4.4变量的命名规范

见名知意

类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词其他后面单词首字母大写

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

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

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

方法名:首字母小写和驼峰原则

 

5运算符

5.0运算符种类

 

优先级:使用()

 

  1. 算术运算符:+加,-减,*乘,/除,%取余,(++,--)

     

  2. 赋值运算符:=赋值

     

  3. **关系运算符:>大于,<小于,>=大于等于,<=小于等于,==等于,!=不等于,instanceof

     

  4. 逻辑运算符:&&与,||或,!非

     

  5. 位运算符:&,|,^,~,>>,<<,>>>

     

  6. 条件运算符:?,:,

     

  7. 扩展赋值运算符:+=,-=,*=,/=

 

5.1算数运算符

//算术运算基操
public class Demo01 {
   public static void main(String[] args) {
       //二元运算符
       //ctrl+D 复制当前行到下一行
       int a = 10;
       int b = 20;
       int c = 30;
       int d = 40;
       System.out.println(a+b);
       System.out.println(a-b);
       System.out.println(a*b);
       System.out.println((double)a/b);
       //System.out.println(a/b);--注意作用范围
?
  }
}
//不同类型数值算术运算
public class Demo02 {
   public static void main(String[] args) {
       long a = 528768734L;
       int b = 52876;
       short c = 528;
       byte d = 5;
?
       System.out.println(a+b+c+d);//long
       System.out.println(b+c+d);//int
       System.out.println(c+d);//int
       //有long就是long,无long均为int;有double就是double
  }
}
//取余·模运算
public class Demo04 {
   public static void main(String[] args) {
?
       int a = 528768734;
       int b = 19;
       int c = 2002;
?
       System.out.println(a%b);//7 //528768734÷19=?……7
       System.out.println(a%c);//494 //528768734÷2002……494
  }
}

关系运算符

//关系运算符
public class Demo03 {
   public static void main(String[] args) {
       //关系运算符返回结果:Boolean:true/false
       //if操作
?
       int a = 10;
       int b = 20;
?
       System.out.println(a>b);//false
       System.out.println(a<b);//true
       System.out.println(a!=b);//true
       System.out.println(a==b);//false
  }
}

 

 

5.2自增自减运算符

一元运算符

  • ++自增

    • a++:后执行a=a+1

    • ++a:先执行a=a+1

  • --自减

    • a--:后执行a=a-1

    • --a:先执行a=a-1

//一元运算符:++,--
public class Demo05 {
   public static void main(String[] args) {
       
       //++自增,--自减
       int a = 3;
?
       //a++:
       int b = a++;//a++: 执行完这行代码后,先给b赋值,再自增(在下一句:a=a+1)
       /*a=a+1*/
       System.out.println(a);//a=4
?
?
       //++a:
       /*a=a+1*/
       int c = ++a;//++a: 执行完这行代码前,先自增,再给c赋值(在上一句:a=a+1)
       System.out.println(a);//a=5
?
?
       System.out.println(b);//b=3
       System.out.println(c);//c=5
       System.out.println(++a + ++b- --c);//6+4-4=6
?
?
       //幂运算
         //很多运算要使用工具类操作
       double pow1 = Math.pow(2, 3);//2^3
       double pow2 = Math.pow(3, 2);//3^2
       System.out.println(pow1);
       System.out.println(pow2);
  }
}

 

5.3逻辑运算符

a&&a

a||a

!(a&&a)

package Operation;
//逻辑运算符
public class Demo06 {
   public static void main(String[] args) {
       
       //与(and) 或(or) 非(取反)
       boolean a = true;
       boolean b = false;
?
       System.out.println("a && b:" + (a&&b));//逻辑与运算:两个变量都为真,结果才为真,有先后运算顺序
       System.out.println("a || b:"+(a||b));//逻辑或运算:两个变量有一个为真,结果就为真
       System.out.println("!(a && b:)"+!(a&&b));//逻辑非运算:真变假,假变真
?
       System.out.println("————————————————————————————————————————————————————————————————————————————");
?
       //短路运算
       int c = 5;
       boolean d = (c>5)&&(c++>5);
       System.out.println(d);//c>5错
       System.out.println(c);//短路返回,未执行c++操作,因此输出c=5而不是c=6
?
       boolean e = (c>5)||(c++>5);//
       System.out.println(e);//c>5错,而c++还未生效,因此此处c++>5仍被视为判断c>5
       System.out.println(c);//但c++操作已经执行,输出c=6
?
       boolean f =!((c>5)&&(c++>6));
       System.out.println(f);//c>5对,而c++才此处为生效,因此此处c++>6错,又∵非运算,最终输出对
       System.out.println(c);//不会短路,因此可以执行c++操作
  }
}

 

5.4位运算符

&,|,^,~,>>,<<,>>>

package Operation;
//位运算符
public class Demo07 {
   public static void main(String[] args) {
       /*
?
       A = 0011 1100
       B = 0000 1101
?
       A&B = 0000 1100(与:均1取1)
       A|B = 0011 1101(或:有1取1)
       A^B = 0011 0001(亦或:不同为1)
       ~B = 1111 0010(非:相反)
?
       <<(左移:×2)
       >>(右移:÷2)
?
       eg.二进制:
        2: 0000 0010
        3: 0000 0011
        4: 0000 0100
        6: 0000 0110
        8: 0000 1000
       16: 0001 0000
?
       */
       System.out.println(2<<3);//16
       System.out.println(2>>1);//1
       System.out.println(3<<1);//6
       System.out.println(2>>2);//0(不是0.5变的,底层原理是二进制1右移没了)
  }
}

 

5.5复制扩展运算符

+=,-=,*=,/=

//扩展运算符
public class Demo08 {
   public static void main(String[] args) {
?
       int a = 10;
       int b = 20;
?
       a+=b;//a = a+b
       a-=b;//a = a-b
?
       System.out.println(a);
  }
}

 

5.6字符串连接符

+

package Operation;
//字符串连接符 +
public class Demo09 {
  public static void main(String[] args) {
?
      int a = 10;
      int b = 20;
?
      System.out.println(a+b);//30 正常运算
      System.out.println("1"+a+b);//11020 数字前面出现String类型,则判定均为字符串
      System.out.println(a+b+"1");//301 数字后面出现字符串,则仍然先运算数字
  }
}

 

5.7三元条件运算符

x?y:z

package Operation;
//三元运算符
public class Demo10 {
   public static void main(String[] args) {
       //x ? y : z
       //必须掌握
       //如果x==true,则结果为y,否则为z
       int score = 84;
       boolean x = score > 90;
       String y = "牛逼";
       String z = "傻逼";
?
       System.out.println(x?y:z);
       //优化如下
       System.out.println(score>90?"牛逼坏了":"大傻逼");
  }
}

 

 

 

6包机制

包机制

包的本质:文件夹

规范:公司域名倒置作为包名

com.baidu.www

 

定义包:

package 1.2.3.…….n

导入包:

import 1.2.3.…….n.name

 

7JavaDoc

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

参数信息:

  • @author 作者名

  • @version 版本号

  • @since 最早使用的jdk版本

  • @param 参数名

  • @return 返回值情况

  • throws 异常抛出情况

package com.Base;
?
/**
* @author JYttt
* @version 1.0
* @since 1.8
*
*/
public class Demo11 {
   String name;
   /**
    *
    * @param name
    * @return
    */
   public String test(String name){
       return name;
?
       //通过命令行:javadoc (注释) Java文件
  }
}

 

Java基础语法

原文:https://www.cnblogs.com/jyttt/p/14403562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!