JAVA基础语法

标识符与关键字

JAVA关键字基本列表:

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

关键字用于区分代码的类型,相当于代码的"名字"
而且文件取名不允许取名如上表所示的名字(包括方法之类的)
JAVA的所有组成部分都需要名字。类名,变量名以及方法名都会被称为"标识符"

标识符的注意点:

  • 所有的标识符都应该以字母(A-Z或者a-z),符号"$",或者下划线("_")开始
  • 首字符之后可以是字母(A-Z或者a-z),符号"$",或者下划线("_"),或任何数字字符组合
  • 不能使用关键字作为变量名或者方法名
  • 标识符对于大小写是敏感的
  • 合法例子:abc,$123,_hahah,__123_Abc
  • 非法例子:13abc,%123,-#isyy
  • 标识符的使用可以用中文名和拼音
    例子:
    public class Demo1 {
        public static void main(String[] args) {
          String 碧蓝航线="我想捞到夕立啊啊啊";
          System.out.print(碧蓝航线);
        }
    }
    但是不建议这样,毕竟大家都习惯了用英文表示,其次就是你写代码的时候有可能有外国友人看到,或者有些电脑识别不出中文会报错

数据类型

图解:
浅薄的一些JAVA基础知识_JAVA

JAVA的数据类型也分为强类型语言和弱类型语言

强类型:要求变量的使用严格按照规定,所有变量都需要定义后才能使用(例如C和JAVA等)
弱类型:与强类型相反(例如VB和JS)
基本类型的转换排序(从低到高):byte,short,char→int→long→float→double(可从低到高而不能从高到低,byte,short和char不能相互转换,而且int不能转换成前者任何一个)
强制转换类型也可以用(类型名)+balabala来进行转换,但是要注意精度丢失或者内存溢出。十分注意这种强制转换不能对布尔值(boolean)使用。通常用于高转低,不用于低转高

变量

  • 含义:即为可以变化的量
  • 因JAVA是一种强类型的语言,所以每个变量都需要声明才能够使用!!
  • JAVA变量是程序中最基本的存储单元,其中拥有的要素有变量名,作用域和变量类型
  • 例如:
    public class Demo1 {
      public static void main(String[] args) {
          int hello=1314;
          //数据类型 变量名 = 值
          int love,peace;
          //可以用逗号来隔开并声明多个变量
      }
    }
  • 注意事项:
  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  2. 变量名必须是合法的标识符
  3. 变量声明是一个完整的语句,因此每一个变量声明必须以分号来进行结尾
"String"不是关键字,类

(额外话题)字节

  • 字节分为:bit,byte(B),KB,MB,GB,TB
  • 位(bit):是计算机内部数据存储的最小单位,由八位二进制组成
  • 字节(byte):是计算机数据处理的基本单位,由八个bit组成,通常用大写B来表示
  • 1B=8bit
  • 区别:字符是指计算机使用的字母,数字,字和符号
  • 关系:
  1. 1bit表示一位
  2. 1Byte表示一个字节
  3. 1024B=1KB
  4. 1024KB=1MB
  5. 1024MB=1GB
  6. 1024GB=1TB

电脑的32位操作系统和64位操作系统

  • 含义:例如64位操作系统指的是它可以最多拥有128GB的寻址能力,而32位操作系统只有4GB
  • 性质:64位的操作系统可以装32位操作系统使用的cpu,也可以装64位操作系统的cpu,而32位操作系统不能进行此操作,它只能装对应的32位操作系统需要的cpu(因为其关乎操作系统的寻址能力)
  • 64位操作系统最多可以支持128GB的操作内存,但是32位操作系统只能支持4GB的操作内存(操作内存可理解成生活中装电脑用的内存条的大小)

JAVA支持以下运算符

  • 算数运算符:+,-,*,/,%(模运算),++,--
  • 赋值运算符:=
  • 关系运算符:>,
  • 逻辑运算符:&&(相当于数学中的交),||(相当于数学中的或),!(判断真假)
  • 位运算符:&,|,^,~,>>,<
  • 条件运算符:?,:
  • 三目运算符:
    例:x?y:z
    如果x==true,则结果为y,反之。(y与z进行比对)

Scanner的使用

使用Scanner需要有个声明:import java.util.Scanner
基本语法:

       public class Demo01{
       public static void main(String[] args){

       Scanner input=new Scanner(System.in);
       }
       }

在if...else...语句中,括号内如果想判断输入的数是否为整数,打出input.hasnextInt()即可
比较特殊的情况:String str=input.next()只能输出像"hello"这样不带空格的字符串,不然打入的字符串中如果含有空格,只会读取空格前的字符串。如果想输出如"Hello World"这种带空格的字符串,则需打出这种格式的Scanner:
String str=input.nextLine(),这样我们的Scanner读取Hello World的时候会连同空格一起读取,除非我们按了回车键。
注意:凡是属于IO流的类如果不关闭就会一直占用资源,最好就是用完就关,输入input.close()即可

结构

顺序结构

JAVA的语言输出会按照行的顺序来进行输出
虽然好理解,但是他是每个算法都离不开的一种算法结构

if结构

if结构有if....else...结构和if.....结构和if.......else if.......else结构

  • if....else.....结构会先判断括号内关系式是否为真,如果为真就运行if里的内容,如果为假会运行else的内容
  • if.....结构只会运行真的情况
  • if....else if....else结构会先判断if内的关系式是否为真,若为真就会运行if内的程序,若为假就会运行下一个判断,即else if括号内的关系式,若为真就运行其内容程序,若为假就运行else后的内容(else if可叠加)

Switch结构

switch结构大概为:
switch(某个数)
{
case 某个数:
语句;
break;
case 某个数:
语句;
break;
default:
语句
}
若case语句后不加break会导致输出后续不加break的所有case语句,被称为"case穿透"
Switch是一种选择结构,从JDK7开始支持了字符串的类型

While,do....while和for循环结构

while和for的循环类似,但是两者语法不同

  • for:语法为for(int i=0;i<=100;i++){程序内容}
  • while:语法为while(i>0){程序内容},会判断括号内的语句是否为真,若为真则继续运行其程序内容
  • do....while:语法为do{程序内容}while(i>0),会先运行do后面的程序内容,之后会判断while后面的括号内容是否为真,若为真则继续运行do后面的程序内容
    小代码:打印9*9乘法表:
public class Demo1 {
	public static void main(String[] args) {
        for(int i=1;i<=9;i++){       //用于行数的循环
            for(int h=1;h<=i;h++){    //用于列数的循环
                if(h==i){
                    System.out.println(h+"*"+i+"="+(h*i)+"\t");
                }
                else{
                    System.out.print(h+"*"+i+"="+(h*i)+"\t");
                }
            }
        }
	}
}

数组

一维数组

  • 基本定义语法:类型+名字[];
  • 数组的下标:指的是上面[]内的数字,即数组的范围,数组是从0开始计数的
    例如我们定义一个整型数组i[3]={1,2,3,4}
    那么i[0]=1,i[1]=2,i[2]=3,i[3]=4

二维数组

  • 定义语法:类型+名字[][]
  • 其作用类似于线性代数的矩阵

一些矩阵小知识:如果想输出[1,2,3,4,5]这样的数组,只要在System.out.print()括号内输入Arrays.toString(数组名)即可

方法

含义

  • Java的方法是语句的集合,他们在一起执行一个功能。
    • 方法是解决一类问题的步骤的有序组合
    • 方法包含于类或对象中
    • 方法在程序中被创建,在其他地方被引用
  • 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展

定义

图解:
浅薄的一些JAVA基础知识_JAVA_02

方法的重载

方法的重载与返回类型无关!!!
代码例子(int时):

import java.util.Scanner;
public class Demo1 {
    //主函数
    public static void main(String[] args) {
        int max=max(10,20);          //此时取的方法类型为int整型
        System.out.println(max);
    }

    //比大小的函数
    public static double max(double num1,double num2){
        double result=0;
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;        //终止其方法
        }
        if(num1>num2){
            result=num1;
        }
        else{
            result=num2;
        }
        return result;
    }

    //另一个比大小函数,名字相同但是类型不同
    public static int max(int num1,int num2){
        int result=0;
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;            //同样的终止其方法
        }
        if(num1>num2){
            result=num1;
        }
        else{
            result=num2;
        }
        return result;
    }
}

此时输出的结果为:
浅薄的一些JAVA基础知识_JAVA_03
代码例子:

import java.util.Scanner;
public class Demo1 {
    //主函数
    public static void main(String[] args) {
        double max=max(10,20);          //此时取的方法类型为double整型
        System.out.println(max);
    }

    //比大小的函数
    public static double max(double num1,double num2){
        double result=0;
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;        //终止其方法
        }
        if(num1>num2){
            result=num1;
        }
        else{
            result=num2;
        }
        return result;
    }

    //另一个比大小函数,名字相同但是类型不同
    public static int max(int num1,int num2){
        int result=0;
        if(num1==num2){
            System.out.println("num1==num2");
            return 0;            //同样的终止其方法
        }
        if(num1>num2){
            result=num1;
        }
        else{
            result=num2;
        }
        return result;
    }
}

输出结果:
浅薄的一些JAVA基础知识_JAVA_04
方法的名字相同,但是调用的类型不同,输出的类型也同样不同,比如第二幅代码的例子,调用的时double类型方法,那么输出的一定是double类型的方法,这就是方法的重载。前提是两个方法的参数类型要不相同

  • 重载比较官方的定义
    • 重载就是在一个类中,有相同的函数名称,但是形参不同的函数。
  • 方法重载的规则
    • 方法的名称必须相同
    • 参数列表必须不同(个数不同或类型不同,参数排列顺序不同等等.....)
    • 方法的返回类型可以相同也可以不相同。
    • 仅仅返回类型不同不足以成为方法的重载。
  • 实现理论:
    • 方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,宜选择对应的方法,如果匹配失败,则编译器会报错。
此时我的JAVA基础语法知识已经分享完毕,这个随笔既作为我的一个笔记,也可以成为看的人的一个小帮助,感谢阅读~