• Java入门-----基本语法


    Java程序的基本格式:

    Java程序代码必须放在一个类中,刚开始学习时,我们可以将类看作一个Java程序。

    类使用关键字class定义,在class前面可以有类的修饰符。

    类的定义格式如下:

    修饰符 class 类名{
    程序代码
    }

    1:Java程序代码可分为执行定义语句和功能执行语句,其中,结构定义语句用于声明一个类或方法,功能执行语句用于实现具体的功能,每条功能执行语句的最后必须用分号结束(;)。

    举例:

    System.out.println(“这是第一个Java程序”);

    需要注意的是,在程序中,不要将英文的分号写成中文的分号。

    否则编译器会出现如下所示的错误:

    在这里插入图片描述

    2:Java语言是严格区分大小写的,在定义类时,不能将class写成Class,否则编译器会出现如下错误:

    在这里插入图片描述

    假设在程序中定义了一个Computer,computer和Computer是两个完全不同的符号,因此在编写程序的时候需要注意!

    3:在编写Java程序时,为了方便阅读,通常会使用一种良好的书写格式进行排版,但这并不是必需的,我们可以在两个单词或符号之间插入空格,制表符以及换行符等任意的空白字符

    举例:

    第一种书写形式:

    public class HelloWorld { public static void 
        main(String[
                ]args) {System.out.println("你好,Java");}
    }
    
    • 1
    • 2
    • 3
    • 4

    输出:

    你好,Java
    
    • 1

    虽然Java语言并没有严格要求使用什么样的格式编排程序代码,但是,为了提高可读性,应该使自己编写的代码整齐美观,层次清晰

    常用的编排方式即为如下所示:第二种的这种形式,一行只写一条语句,符号“{”与语句同行,符号“}”独占一行

    第二种书写形式:

    public class HelloWorld {
        public static void main(String[]args) {
            System.out.println("你好,Java");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4:Java程序中一个连续的字符串不能分成两行书写

    举例:

    public class HelloWorld{
        public static void main(String[]args){
            System.out.println("你好
                    Java");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    编译并不能通过,出现以下错误:

    在这里插入图片描述

    但有些字符串太长,必须两行才能够显示出来,针对这种情况,我们可以**将字符串分成两个字符串,然后使用加号(+)将这两个字符串连接起来,在加号(+)处换行**,例如:可以将上面的语句修改为如下所示:

    public class HelloWorld{
        public static void main(String[]args){
            System.out.println("你好"+
                    "Java");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    此时就可以输出正常结果啦!

    Java中的注释:

    单行注释:

    单行注释用于对程序中某一行代码进行解释,一般用来注释局部变量,单行注释用符号“//”表示,“//”后面为被注释的内容

    举例:

    int c=10;//定义一个整形变量c
    
    • 1

    多行注释

    多行注释顾名思义就是注释的内容可以为多行,它以符号“/ ”开头,以符号"*/"结束。*

    举例:

    /*int c=10;
    int x=5;*/
    
    • 1
    • 2

    文档注释:

    文档注释是以“/**”开头,并在注释内容末尾以“*/”结束。文档注释是对一段代码概括性的解释说明,可以使用javadoc命令将文档注释提取出来生成帮助文档。

    举例:

    /**
    name="黑马程序员";
    */
    
    • 1
    • 2
    • 3

    Java中的标识符:

    和我们之前学过的C语言、Python等一样,在使用Java语言进行编程的过程中也需要定义一些符号标记一些名称,如类名,方法名,变量名等等,这些符号我们统称为标识符。

    标识符可以是由字母,下划线,数字和美元符号(¥)组成,但不能是Java中的关键字,并且数字不可以开头

    标识符的定义规则和C语言相同,这里就不过多赘述了

    为了增加代码的可读性,在定义标识符时,以下规则建议遵循:

    1:包名所有字母一律小写,例如:cn.itcast.test
    
    2:类名和接口名每个单词的首字母都要大写,例如:ArrayList,Iterator
    
    3:常量名所有字母大写,单词之间用下划线连接,例如:DAY_OF_MONTH
    
    4:变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写,例如:lineNumber,getLineNumber.
    
    5:在程序中,应该尽可能的使用有意义的单词定义标识符,使得程序能够便于阅读,例如:定义用户名----username,定义密码----password
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    Java中的关键字:

    在这里插入图片描述注意:

    1:所有的关键字都是小写的
    
    2:不能使用关键字命名标识符
    
    3constgoto是保留关键字,虽然在Java中还没有任何意义,但在程序中不能用来作为自定义的标识符
    
    4truefalsenull虽然不属于关键字,但他们具有特殊的意义,也不能作为标识符使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Java中的常量:

    常量就是固定不变的值,是不能改变的数据

    举例:

    数字1,字符‘a’,浮点数3.14等都是常量

    在Java中,常量包括整形常量,浮点数常量,布尔常量,字符常量等

    整形常量:

    整形常量是整数类型的数据,有二进制,八进制,以及十六进制

    在程序中为了标明不同的进制,数据都有特定的标识
    
    八进制必须以0开头,例如:0211,0432
    
    十六进制必须以0x或0X开头,例如:0xaf2,0Xdd
    
    整数以十进制表示时,第一位不能是0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    浮点数常量:

    浮点数常量就是数学中用到的小数,浮点数分为单精度浮点数(float)和双精度浮点数(double)两种类型

    单精度浮点数后面以F/f结束,而双精度浮点数后面以D/d结束,当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时**JVM会默认浮点数为double类型的浮点数,浮点数常量还可以通过指数形式表示**

    字符常量:

    字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号(‘’)括起来,字符常量可以是英文字母,数字,标点符号,以及由转义序列表示的特殊字符

    举例:

    ‘a’ ‘1’ ‘&’ ‘/t’

    字符串常量:

    字符串常量用于表示一串连续的字符,一个字符串常量要用一对半角格式的双引号(“”)括起来。

    举例:

    “HelloWorld” “123” “welcome\n”

    布尔常量:

    布尔常量即布尔型的值,用于区分事物的真与假,布尔常量有true和false两个值

    null常量:

    null常量只有一个值null,表示对象的引用为空

    变量的定义:

    在程序运行期间,随时可能产生一些临时数据,应用程序会将这些临时数据保存在内存单元中,每个内存单元都用一个标识符标识,这些用于标识内存单元的标识符就成为变量,内存单元中存储的数据就是变量的值

    通过具体的代码实现变量的定义:

    int x=0,y;
    y=x+3
    
    • 1
    • 2

    通过上述第一行代码定义了两个变量x和y,与此同时也在内存中分配了两块内存单元,不仅如此,在定义变量的时候,为变量x分配了初始值0,而y没有分配初始值,此时x和y在内存中的状态,如下图所示:
    在这里插入图片描述
    通过上述第二行代码,我们为y变量进行赋值,在程序执行到第二行代码的时候,程序首先取出变量x的值,与3相加后,将结果赋值给变量y,此时变量x和y的状态就会发生改变,如下所示:

    在这里插入图片描述

    变量的数据类型:

    在这里插入图片描述

    整数类型变量:

    整数类型变量用来存储整数数值,即没有小数部分的值,为了给不同大小范围内的整数合理地分配存储空间,整数类型分为四种不同的类型,分别是字节型(byte),短整型(short),整形(int),长整型(long)

    在这里插入图片描述

    注:在为一个long类型的变量赋值时,所赋值的后面要加上字母L(或小写l),说明赋值为long类型,如果赋的值未超出int的取值范围,则可以省略字母L(或小写l)

    举例:

    long num=22000000000L;//所赋的值超过了int型的取值范围,后面必须加上字母L
    long nums=189L;//所赋的值未超过int型的取值范围,后面可以加字母L
    long nums=189;//所赋的值未超过int型的取值范围,后面的字母L可以省略
    
    • 1
    • 2
    • 3

    浮点数类型变量:

    浮点数类型变量用于存储小数数值,double类型所表示的浮点数比float类型更精确

    下图为两种浮点数所占存储空间的大小以及取值范围:
    在这里插入图片描述

    在Java中,一个小数会被默认成double类型的值,因此在为一个float类型的变量赋值时,在所赋值的后面一定要加上字母F(或小写字母f),而为double类型的变量赋值时,可以在所赋值的后面加上字母D(或小写d)或者可直接省略

    举例:

    float num=3.1423f;//为一个float类型变量赋值,后面必须加上字f
    double nums=98.3;//为一个double类型变量赋值,后面可以省略字母d
    double nums=189.8d;//为一个double类型变量赋值,后面可以加上字母d
    
    • 1
    • 2
    • 3

    字符型变量:

    在Java 中,字符类型变量用char表示,用于存储一个单一字符,Java中每个char类型的字符变量都会占用两个字节

    在给char类型变量赋值时,需要用一对英文半角式的单引号(’ ‘)把字符括起来,例如’a’.

    无论是文字还是数字,在计算机中,他们都能够被表示为由连续的0或1表示出来的二进制,但人们是很难理解这种二进制的,于是就产生了各种方式的编码,使用一个数值代表某个字符,如我们在C语言中常用的字符编码系统ASCII

    Java使用Unicode字符编码系统Unicode为每个字符制定了一个唯一的数值,在计算时,计算机会自动将字符转化为所对应的数值

    举例:

    char c='a';//为一个char类型的变量赋值字符a
    char ch=97;//为一个char类型的变量赋值整数97,相当于赋值字符a
    
    • 1
    • 2

    布尔类型变量:

    在Java中,使用boolean定义布尔类型变量,布尔类型变量只有true和false两个值,定义布尔类型变量

    举例:

    boolean flag=false;//定义一个boolean类型的变量flag,初始值为false
    flag=true;//改变变量flag的值为true
    
    • 1
    • 2

    变量的类型转换:

    自动转换类型:

    自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显示地进行声明,由编译器自动完成

    自动类型转换必须同时满足两个条件:

    一是两种数据类型彼此兼容
    二是目标类型的取值范围大于源类型的取值范围
    
    • 1
    • 2

    举例:

    byte b=3;
    int x=b;
    
    • 1
    • 2

    上述代码中,使用byte类型变量b为int类型的变量x赋值,由于int类型的取值范围大于byte类型的取值范围,编译器在赋值过程中不会造成数据的丢失,所以编译器能够自动完成这种转换,在编译时,不报任何错误

    总的来说就是取值范围小的转换为取值范围大的实现的是自动转换

    比如:

    byte转化为short,int,long等
    short,char转化为int,long

    反过来则不能自动进行转化,需要强制类型转化!

    强制类型转化:

    强制类型转化也叫做显式类型转化,意为两种数据类型之间的转化需要进行显式的说明,当两种类型彼此不兼容,或者是将取值范围大的转化为取值范围小的,自动类型转化无法进行,必须进行强制类型转化

    举例:

    public class HelloWorld{
        public static void main(String[]args){
            int num=4;
            byte b=num;
            System.out.println(b);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    编译并没有通过,而是报出以下错误:

    在这里插入图片描述

    解决办法:

    进行强制类型转化,即强制将int类型的值赋给byte类型的变量

    强制类型转化格式:目标类型 变量=(目标类型)值

    因此对于上述类型转换,我们可以修改为:

    byte b=(byte)num;
    
    • 1

    此时便可以正常运行!

    在对变量进行类型转化的时候,如果将取值范围较大的数据类型强制转化为取值范围较小的数据,例如将int–>byte这种,则极容易造成数据精度的丢失

    举例:

    public class HelloWorld{
        public static void main(String[]args){
            byte a;
            int b=298;
            a=(byte)b;
            System.out.println("b="+b);
            System.out.println("a="+a);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出:

    b=298
    a=42
    
    • 1
    • 2

    通过输出结果,我们会发现,即使进行了强制类型转化,但a和b的值仍然不同,这就是因为取值范围大的变量类型int转化为取值范围小的变量类型byte的过程中,发生了数据精度的丢失

    具体原因如下:
    在这里插入图片描述

    变量的作用域:

    无论C语言还是Java,变量都需要先定义才能使用,但这并不代表定义了的变量在下面的程序代码中都可以使用,变量只能在其作用范围内才可以被使用,这个作用范围称为变量的作用域

    变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域

    举例:

    在这里插入图片描述

    基本了解了变量的定义域后,下面我们通过一个程序熟悉一下:

    举例:

    public class HelloWorld{
        public static void main(String[]args){
            int  a=90;
            {
                int b=2;
                System.out.println("a is"+a);
                System.out.println("b is"+b);
            }
            a=b;
            System.out.println("a is"+a);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    编译未通过,报错如下:

    在这里插入图片描述

    原因即为:变量y在作用域范围之外被使用,出错代码为:a=b;这一句,由于变量b的作用域为内括号,因此出了这个内括号的范围,变量b便无法使用。

    Java中的运算符:

    在绝大多数的程序中都出现过以下的特殊符号,例如+,-,*,=,>等等,这些特殊符号叫做运算符,运算符通常用于对数据进行算术运算,赋值运算和比较运算

    算数运算符:

    在这里插入图片描述

    算术运算符在使用的过程中需要注意以下几点:

    1:在进行自增(++)和自减(–)运算时,如果运算符++或–放在操作数的前面,则先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面,则先进行其他运算再进行自增或自减运算

    举例:

    public class HelloWorld{
        public static void main(String[]args){
                int a=1;
                int b=2;
                int x=a+b++;
                System.out.println("b="+b);
                System.out.println("x="+x);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出:

    b=3
    x=3
    
    • 1
    • 2

    对于如下所示,这行代码,因为自增(++),放在了操作数的后面,因此先执行a+b运算,再执行b++操作

    此时的b还是2,但当程序运行到下一步时,b就变成3了

     int x=a+b++;
    
    • 1

    2:在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数,如果除法运算有小数参与,得到的结果会是一个小数

    举例:

    2510/1000 属于整数之间相除,会忽略小数部分,得到的结果是2
    而2.5/10的结果是0.25
    //这种规则和C语言是完全相同的,要想结果为浮点数,那么除数,被除数中,至少包含一个浮点数

    3:在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关

    举例:

    (-5)%3=-2
    5%(-3)=2

    赋值运算符:

    在这里插入图片描述

    赋值运算符在使用的过程中需要注意以下几点:

    1:在Java中可以通过一条赋值语句对多个变量进行赋值

    举例:

     int x,y,z;
     x=y=z=-4;//同时为多个变量赋初始值为4
    
    • 1
    • 2

    但是不能在定义变量的时候,进行多个变量赋多个初始值

    举例:

      int x=y=z=3;
    
    • 1

    2:在众多赋值运算符中,除了“=”,其他都是特殊的赋值运算符,以“+=”为例,x+=3所表示的含义即为x=x+3,表达式首先会进行x+3运算,再将其结果赋值给x,其他运算符以此类推

    比较运算符:

    在这里插入图片描述

    注:一定不要将比较运算符“==”误写成赋值运算符"="

    逻辑运算符:

    在这里插入图片描述

    逻辑运算符在使用的过程中需要注意以下几点:

    1:逻辑运算符可以针对结果为布尔值的表达式进行运算

    例如:

    x>3&&y!=0
    
    • 1

    2:运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false

    虽然运算符“&”和“&&”都表示与操作,但二者在使用上还是有一定的区别:

    在使用“&”进行运算时,不论“&”左边的表达式结果为true还是false,“&”右边的表达式都会进行运算,但在使用“&&”进行运算时,当“&&”左边的表达式结果为false时,“&&”右边的表达式就不再进行运算,因此“&&”被称作短路与

    举例:

    public class HelloWorld{
        public static void main(String[]args){
            int x=0;
            int y=0;
            int z=0;
            boolean a,b;//a,b是布尔型变量,因此输出结果只能为true或者false
            a=x>0&y++>1;//即使x>0为false,y++>1还是会执行,因此才有下面的y输出结果为1
            System.out.println(a);
            System.out.println("y="+y);
            b=x>0&&z++>1;//挡x>0的结果为false,z++>1便不会被执行,因此z的值依然是0
            System.out.println(b);
            System.out.println("z="+z);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    输出:

    false
    y=1
    false
    z=0
    
    • 1
    • 2
    • 3
    • 4

    3:运算符“|”和“||”都表示或操作,当运算符两边的任一表达式的值为true时,其结果为true,只有两边表达式的结果都为false时,其结果才为false,和逻辑与操作相类似,“||”为短路或,当运算符“||”左边的表达式结果为true时,右边的表达式便不再进行

    4:运算符“^”表示异或操作,当运算符两边的布尔值相同(都为true或者false),其结果为false,否则为true

    运算符优先级:

    在这里插入图片描述

    上表中所列举的这些运算符,优先级的数字越小代表优先级越高

    举例:

    public class HelloWorld{
        public static void main(String[]args){
            int a=2;
            int b=a+3*a;//*的优先级高于+,因此先执行3*a,在执行+a运算
            System.out.println("b="+b);
            int c=(a+3)*a;//()的优先级高于*,因此先执行(a+3),再执行*a运算
            System.out.println("c="+c);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出如下:

    b=8
    c=10
    
    • 1
    • 2
  • 相关阅读:
    cesium gltf控制
    2019年1+X 证书 Web 前端开发中级理论考试——易错题、陌生但又会考到的题目原题+答案
    Linux常用命令——cd命令
    手撕常见JS面试题
    07-Linux基本权限
    算法分析与设计——要求根据给定的正整数n计算第n个斐波那契数。
    Linux 优先级 环境变量 命令行参数
    面试精选:3、史上最详细的Linux精选面试题(二)
    c++和java实现策略模式的差异
    前端性能精进之优化方法论(二)——分析
  • 原文地址:https://blog.csdn.net/m0_64365419/article/details/126655559