JavaSE基本语法~

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");}
}

输出:

你好,Java

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

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

第二种书写形式:

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

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

举例:

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("你好
                Java");
    }
}

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

在这里插入图片描述

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

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("你好"+
                "Java");
    }
}

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

Java中的注释:

单行注释:

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

举例:

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

多行注释:

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

举例:

/*int c=10;
int x=5;*/

文档注释:

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

举例:

/**
name="黑马程序员";
*/

Java中的标识符:

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

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

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

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

1:包名所有字母一律小写,例如:cn.itcast.test

2:类名和接口名每个单词的首字母都要大写,例如:ArrayList,Iterator

3:常量名所有字母大写,单词之间用下划线连接,例如:DAY_OF_MONTH

4:变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写,例如:lineNumber,getLineNumber.

5:在程序中,应该尽可能的使用有意义的单词定义标识符,使得程序能够便于阅读,例如:定义用户名----username,定义密码----password

Java中的关键字:

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

1:所有的关键字都是小写的

2:不能使用关键字命名标识符

3constgoto是保留关键字,虽然在Java中还没有任何意义,但在程序中不能用来作为自定义的标识符

4truefalsenull虽然不属于关键字,但他们具有特殊的意义,也不能作为标识符使用

Java中的常量:

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

举例:

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

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

整形常量:

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

在程序中为了标明不同的进制,数据都有特定的标识

八进制必须以0开头,例如:0211,0432

十六进制必须以0x或0X开头,例如:0xaf2,0Xdd

整数以十进制表示时,第一位不能是0

浮点数常量:

浮点数常量就是数学中用到的小数,浮点数分为单精度浮点数(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

通过上述第一行代码定义了两个变量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可以省略

浮点数类型变量:

浮点数类型变量用于存储小数数值,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

字符型变量:

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

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

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

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

举例:

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

布尔类型变量:

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

举例:

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

变量的类型转换:

自动转换类型:

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

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

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

举例:

byte b=3;
int x=b;

上述代码中,使用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);
    }
}

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

在这里插入图片描述

解决办法:

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

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

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

byte b=(byte)num;

此时便可以正常运行!

在对变量进行类型转化的时候,如果将取值范围较大的数据类型强制转化为取值范围较小的数据,例如将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);
    }
}

输出:

b=298
a=42

通过输出结果,我们会发现,即使进行了强制类型转化,但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);
    }
}

编译未通过,报错如下:

在这里插入图片描述

原因即为:变量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);
    }
}

输出:

b=3
x=3

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

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

 int x=a+b++;

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

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

举例:

  int x=y=z=3;

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

比较运算符:

在这里插入图片描述

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

逻辑运算符:

在这里插入图片描述

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

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

例如:

x>3&&y!=0

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);
    }
}

输出:

false
y=1
false
z=0

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);
    }
}

输出如下:

b=8
c=10
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从未止步..

谢谢你的打赏,我会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值