(三)JAVA学习笔记--java基础语法学习

1. 注释、关键字、标识符

1.1 注释

书写注释是一个非常好的习惯,平时写代码一定要注意规范
JAVA中的注释分为三种:

单行注释 //

多行注释 /* */

文档注释 /** * */

在这里插入图片描述

1.2 关键字

1.2.1 什么是关键字

关键字是JAVA中被赋予特定意义的一些三次,不可以把它当作标识符来使用。

1.2.2 关键字的分类

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

1.3 标识符

1.所有的标识符都应该以字母、美元符($)、下划线(_)开始
2.出了首字母之外,其他位置可以是数字的任何字符组合,但特殊符号不能使用
3.不能使用关键字作为变量名或者方法名。

2. 数据类型

2.1 强类型语言

要求变量的使用要严格符合规定,所有变量都必须先定以后才能使用;安全性高,但速度慢。

2.2 弱类型语言

Java的数据类型分为两大类

  • 基本类型(primitive type
    1.整数
    byte 1字节
    short 2字节
    int 4字节
    long 8字节
    2.小数
    float 4字节
    double 8字节
    3.其它
    char 2字节 无符号 2(15)-1
    boolean 1字节 代表真true or 假false
  • 引用类型(reference type
    String 字符串
        String s = "  abccccd  ";
        System.out.println(s.charAt(2));//显示第2坐标符号
        System.out.println(s.indexOf("a"));//显示"a"所在坐标位置
        System.out.println(s.length());//显示坐标长度
        System.out.println(s.equals("ccdda"));//比对是否正确true or false
        System.out.println(s.compareTo("ABCD"));//比较大小a<b,返回正值,否者相反。等于为0.
        System.out.println(s.toLowerCase());//变成小写"abcd"
        System.out.println(s.toUpperCase());//变成大写"ABCD"
        System.out.println(s.trim());//当有空格存在时"  abcd  ",删除空格。
        System.out.println(s.split("b"));//从指定位置切开

2.3 拓展

2.3.1 浮点数拓展

  • float; double 不够准确; 实际过程中浮点数无限且离散的,但是float是有限的,他会自动舍入误差,大约接近,但不等于;
  • 银行等准确的计算工具最好使用BigDecimal 数学工具类
  • 精确的对账最好完全避免使用浮点数进行比较

2.3.2 字符拓展

  • 所有的字符本质还是数字
  • Java使用Unicode字符集编码,格式’\u0000’-’\uffff’(Unicode是世界通用的定长字符集,所有的字符都是16位,2个字节)
  • 对于不方便输入的字符采用转义字符表示

转义字符:
如:’\n’“换行”,‘\t’“空格”,‘\’,‘\b’,‘\r’,‘"’,‘\u4e2d’.
数字编码:‘0’:48,‘1’: 49…
英文编码:‘A’:65,‘B’:66…
小写英文:‘a’ : 97,‘b’:98…
练习:

import java.util.Scanner;

public class Hello {
    
    
    public void  zifu(String a){
    
    
        char[] zi = a.toCharArray();//(String)a转换字符型数组toCharArray,并赋值
        int mu = 0;//字母
        String m1 = "";
        int s = 0;//数字
        String s1="";
        int k = 0; //空格
        int f = 0; //其他
        String f1="";
        for (int i = 0; i <zi.length; i++) {
    
    
            int p = (int)zi[i];//将zi的每一位数组转换为Int数值,用数值进行比对
            if ((65 <= p && p<=90)||(97<= p && p <= 122)) {
    
    //A-Z字母为65-90,a-z字母为97-122
                mu++;
                m1 = m1+zi[i]+" ";
            }else if (48<= p && p <= 57){
    
                      //0-9为48-57
                s++;
                s1 = s1 + zi[i] + " ";
            }else if (p==32){
    
                                  //空格为32
                k ++;
            }else {
    
    
                f++;
                f1 = f1 + zi[i] +" ";
            }
        }
        System.out.println("存在的字母个数:" + mu);
        System.out.println("存在的字母为:" + m1);
        System.out.println("存在的数字个数:" + s);
        System.out.println("存在的数字为:" + s1);
        System.out.println("存在的字符个数:" + f);
        System.out.println("存在的字符为:" + f1);
        System.out.println("存在的空格个数:" + k);

    }
    public static void main(String[] args) {
    
    
        System.out.println("请输入字符串:");
        Scanner scanner = new Scanner(System.in);
        String a = scanner.nextLine();
        Hello hello = new Hello();
        hello.zifu(a);
        scanner.close();

    }
}

3. 类型转换

  • 由于Java是强类型语言,所有需要有些运算的时候的,需要用到类型转换。

低 -------------------------------------------------------------->高

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

​ (小数的优先级高于整数)

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

注意

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在把高容量转换到低容量的时候,需要强制转换,但是有的时候放得下,有的时候会有溢出

4. 变量、常量

4.1 变量

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

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

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

注意事项:

  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
  2. 变量名必须是合法的标识符。
  3. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

变量作用域

  • 类变量
    在类里,整个类里可以使用,前面必须加static;“static int a = 666;”

  • 实例变量
    在类里,从属于对象;“int age;//0”
    如果不自行初始化,这个类型的默认值 0,0.0
    布尔值:默认是false;除了基本类型,其他的默认值都是null;

  • 局部变量
    在方法中,使用时必须声明和初始化值;“int cba = 666;"
    常量名一般使用大写字符。

变量的命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary
  • 除了第一个单词外,后面的单词首字母大写
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线 MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

4.2 常量

  • 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
  • 所谓常量可以理解成一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变。
final 常量名 = 值;
final double PI = 3.14;

5. 运算符

Java语言支持如下运算符:

  • 算术运算符:+,-,*,/,%(余),++(自增),–(自减);
  • 赋值运算符:=;
  • 关系运算符:> , < , >= , <= , == , != , instanceof;
  • 计算结果一定是true or false;以后会和if一起用
  • 逻辑运算符:&& (与), ||(或), !(非);
  • 计算结果一定是true or false
  • 位运算符:&,|,^,~,>>,<<,>>>;
  • 条件运算符:?,:;
  • 扩展赋值运算符:+=,-=,*=,/=;

算术运算符
++(自增、自减)
a++:++在后时,先赋值,再自增;
++a:++在前时,先自增,再赋值;

int a = 5;
int b = a++;//a++加在后,先给b赋值,再自增;
System.out.println(a);//a=6
System.out.println(b);//b=5
================================================
int c = ++a;//++a加在前,先自增,再赋值给c;
System.out.println(a);//a=6;
System.out.println(c);//c=6;

TIP:

  • 算术运算符使用中,有一个为long或者double类型,其结果为long或者double类型,不然为int类型。
  • 很多运算java,会使用一些很多工具类来操作

逻辑运算符

  • && (与):逻辑与运算,两个变量都为真,结果才为true
  • ||(或):逻辑或运算,两个变量有一个为真,结果才为true
  • !(非):如果是真,则变为假,如果是假则变为真
int q = 10;
int  w = 20;
System.out.println(q<w && w>30);//(false),q<w正确,w>30错误,
// 可解释为:q<w与w>30同时两条成立,结果为true,所以最后结果为"false"
System.out.println(q<w || w>30);//(true),q<w正确,w>30错误,
// 可以解释为:q<w或w>30其中一条成立,结果就为true,所以最后结果为"true"
System.out.println(!(q<w));//(false),q<w正确。
// 可以解释为:q应该不(非)小于w,但是实际上q<w,所以为”false"

短路运算
当前面为“false”时,后面的将不执行,只有“true”才会运行,这就叫短路运算。

int z = 5;
boolean x = (z<4)&&(z++<4);//由于(z<4)不成立为false,(z++<4)就不运行
System.out.println(x);//(false)
System.out.println(z);//(5)由于(z++<4)没有运算,所以z没有自增

位运算符

  • & :全部为1才为1,否者为0
  • | :全部为0才为0,否者为1
  • ^(同0):相同为0,否者为1
  • ~(取反):取二进制相反的数
  • "<<"二进制左位移=代表*2
  • ">>"二进制右位移=代表/2
    扩展运算符
    +=,-=,*=,/=;
int a = 5, b = 10;
a+=b;//a=a+b(15)
a-=b;//a=a-b(-5)
a*=b;//a=a*b(50)
a/=b;//a=a/b(0.5)

字符串连接符
在“+”号前出现string类型时,他会把“+”后面的一操作数,转换成steing类型,进行拼接。

 int a = 5, b = 20;
System.out.println("yes"+a+b);//(yes520)
System.out.println(a+b+"yes");//(25yes)
System.out.println("yes"+(a+b));//(yes25)
System.out.println(""+a+b+"yes");//(520yes)
System.out.println(""+a+b+(a+b)+"yes");//(52025yes)

条件运算符
x? y:z x值如果为true=y,如果为false=z

int score = 60;
int xm = 70;
int xg = 49;
int xh = 60;
System.out.println("xm:"+(xm>=score ?"及格":"不及格"));//(xm:及格)
System.out.println("xg:"+(xg>=score ?"及格":"不及格"));//(xg:及格)
System.out.println("xh:"+(xh>=score ?"及格":"不及格"));//(xh:及格)

6. 包机制

“包的本质就是文件夹”

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
  • 包语句的语法格式为:
    package pkg1[.pkg2[.pkg3...]]//定义包
  • 一般利用公司域名倒置作为包名;
  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"完成此功能
    *import package1[.package2...].(classname|*);//导入包,*导入这个包下所以的类

7. JavaDoc

  • Javadoc命令是用来生成自己API文档的
  • 参数信息
    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的jdk版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
/**
 * @author CHAIN
 * @version 1.0
 * @since 1.8
 */

生产文档:javadic+参数+java文件

javadoc -encoding UTF-8 -charset UTF-8 Doc.java

Guess you like

Origin blog.csdn.net/CHAINQWE/article/details/114398327