JAVA语法基础

Posted 盒子先生金金

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA语法基础相关的知识,希望对你有一定的参考价值。

Java中标识符的命名必须满足以下原则:

p 标识符必须以字母、下划线(_)或美元符($)开头,后面可以跟字母、数字、下划线或美元符

p 除下划线“_”和“$”符号外,标识符中不包含任何特殊字符,如空格

p 标识符区分大小写,比如,“abc”和“Abc”是两个不同的标识符

p 对于标识符的长度没有限制

p 不能使用Java关键字作为标识符

根据上述原则,可知:myvar、_myvar、$myvar、_9myvar等都是合法的标识符,而下面的标识符都是不合法的:

my var //包含空格

9myvar //以数字开头

a+c //包含特殊字符“+”

注意:Java中的关键字都是小写的,但是true和false都不是Java中的关键字。

标识符应该见名知意。

    Java中的关键字(保留字),就是Java保留下来用作特殊用途的一些词。这些关键字不能当做标识符使用。Java中的关键字如下:

abstract

assert

Boolean

break

byte

case

catch

char

class

continue

const

default

do

double

else

extends

enum

final

finally

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

short

static

synchronized

super

strictfp

this

throw

throws

transient

try

void

volatile

while

其中goto和const现在基本上不用了。另外true、false和null虽然不是关键字,但是也不能用作标识符。

变量:所谓的变量就是利用声明的方式将内存中的某个区域保留下来,然后起一个名字供程序使用。变量包含三个要素:变量名、变量的数据类型和变量的值,变量必须先声明然后再使用。

变量的定义方式:

<data_type>  var_name = var_value;

其中data_type是Java中的数据类型,var_name是变量名,要符合标识符的命名规则。

例如:int num;

可以同时声明多个同类型的变量,变量之间用“,”隔开:

int num,num1,num2;

但是不建议使用这种方式,每行定义一个变量。

常量:程序运行期间不变的量。在Java中使用final来定义常量。定义方式如下:

final <data_type>  var_name = var_value;

其中final是关键字,表示该变量只能赋值一次,必须注明,

举例如下:

final double PI = 3.1415926; //

final Boolean IS_MAN = true; //

注意:常量名通常全部采用大写字母,如果常量名由多个单词组成,则单词之间用下划线“_”来分割,另外需要在定义的同时对常量进行初始化。

 

2、Java的数据类型,运算符

Java是一种强类型的语言,所有的变量在使用之前必须要声明,这就涉及到变量的类型和名称,名称前面已经介绍过了;在Java中,数据类型分为:原生数据类型(primitive type)和引用数据类型(reference type)。

原生数据类型(primitive type)又称为基本数据类型,是Java中最基本最简单的数据类型,原生数据类型一次只能存放一个值,它又分为下面几种:

整数类型:int,long,short,byte

浮点类型:double,float

布尔类型:boolean

字符类型:char ‘\u0000’-‘\uffff’

类型

大小/位

取值范围

说明

默认值

byte字节型

8

-27-27-1

8-bit有符号数的二进制补码

0

short短整型

16

-215-215-1

16-bit有符号数的二进制补码

0

int整型

32

-231-231-1

32-bit有符号数的二进制补码

0

long长整形

64

-263-263-1

64-bit有符号数的二进制补码

0L

float单精度

32

大约-3.4E+38~3.4E+38

32-bit IEEE754

0.0f

double双精度

64

大约-1.7E308~1.7E308

64-bit IEEE754

0.0d

boolean布尔型

 

true/false

 

false

char字符型

16

‘\u0000’-‘\uffff’

16-bit Unicode

‘\u0000’

说明:由于float和double表示的都是约数,所以不要用它们表示需要精确的数,比如货币等,如果要表示精确值,需要使用java.math.BigDecimal类。

boolean表示1位信息,但是它的长度/大小没有确切的定义。

默认值,在Java中,当字段(属性)在声明时没有初始化,则编译器会为其赋上一个合理的默认值。

char类型的值要使用一对西文单引号’’括起来,在Java中,西文单引号和双引号是定界符,所以在Java中要想输出西文单引号这样的特殊字符时,需要使用特殊的格式,这就是转义字符,常用的转义字符如下:

转义字符

含义

\ddd

1~3位8进制数所表示的字符

\uxxxx

1~4位16进制数所表示的字符

\’

单引号Single Quote

\”

双引号Double Quote

\\

反斜线Backslash

\b

退格Backspace

\r

回车Carriage Return

\n

换行Linefeed

\t

制表符Tab

\f

换页Formfeed

类型转换,类型转换分为自动类型转换和强制类型转换两种。

自动类型转换:将一种类型的值赋给另一种类型的变量时发生的类型转换,自动类型转换需要满足以下两个条件:1)转换前的类型和转换后的类型兼容;2)转换后的类型的表示范围大于转换前的类型的表示范围。通常的转换如下:

byte→short→char→int→long→float→double    白芍茶因狼服大宝

 1 public class TypeCast {
 2     public static void main(String[] args) {
 3         int i = 100;
 4         char c1 = ‘a‘;//注意用char生命的是要加‘‘的
 5         byte b = 3;
 6         long l = 567L;//声明长整形的变量,其后要加上类型符L
 7         float f = 1.89f;//声明float类型的变量,其后要加上类型符f
 8         double d = 2.1;
 9         int i1 = i + c1; // char类型的变量c1自动转换为int类型参加运算
10         long l1 = l - i1; // int类型的变量i1自动转换为long类型参加运算
11         float f1 = b * f; // byte类型的变量b自动转换为float类型参加运算
12         /* int类型的变量i1自动转换为与f1一致的float类型f1/i1计算结果为float类型. 然后再转换为与d一致的double类型。 */
13         double d1 = d + f1 / i1;
14         System.out.println("i1=" + i1);
15         System.out.println("l1=" + l1);
16         System.out.println("f1=" + f1);
17         System.out.println("d1=" + d1);
18     }
19 }

i1=197

l1=370

f1=5.67

d1=2.1287817269563676





强制类型转换:当要将一个类型表示范围的数赋值给表示范围小的数的时候,例如要将一个double类型的数赋值给int类的数的时候,就需要强制类型转换,语法格式如下:

data_type var1=(data_type)var2;

例如:

float flag = 30.33f;

int num = (int)flag;

在强制类型转换中会丢失精度。在上面的例子中num的值是30。

 

运算符:算术,比较,逻辑,位,赋值运算符,条件运算符。

算术运算符:

运算符

数学含义

示例

运算符

数学含义

示例

a+b

%

取模

a%b

-

减或负号

a-b,-b

++

自增

a++,++a

*

a*b

--

自减

a--,--a

/

a/b

 

 

 

 

 

 

 

比较运算符:

运算符

数学含义

示例

运算符

数学含义

示例

>

大于

a>b

>=

大于等于

a>=b

<

小于

a<b

<=

小于等于

a<=a

==

等于

a==b

!=

 

 

逻辑运算符:

运算符

数学含义

示例

!

!a

&&

a&&b

||

a||b

位运算符:

运算符

数学含义

说明

示例

按位非(NOT)

按位非也叫做补,一元运算符NOT“~”是对其运算数的每一位取反。 

~ 00101010

= 11010101 

&

按位与(AND) 

按位与运算符“&”,如果两个运算数都是1,则结果为1。其他情况下,结果均为零。 

00101010 & 00001111 = 00001010 

|

按位或(OR) 

按位或运算符“|”,任何一个运算数为1,则结果为1。 

00101010 | 00001111 = 00101111 

^

按位异或(XOR) 

按位异或运算符“^”,只有在两个比较的位不同时其结果是1。 

 

<<

左移 

value << num。左移运算符<<使指定值的所有位都左移num位。每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。 

11111000 << 1 

= 11110000 

>>

右移 

右移运算符>>使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)由原来最高位的数字补充。 

11111000 >> 1 

= 11111100 

>>>

无符号右移

无符号右移运算符>>>使指定值的所有位都右移num位。当值中的某些位被“移出”时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)固定由0补充。

11111000 >>> 1 

= 01111100 

赋值运算符:

运算符

示例

运算符

示例

+=

a += b

/=

a /= b

-=

a -= b

%=

a %= b

*=

a *= b

=

a = b

条件运算符:

条件运算符是三目运算符,其语法格式如下:

 <条件表达式>?表达式1:表达式2

 

当条件表达式的值为真时,运算表达式1,否则运行表达式2。

运算符的优先级

优先级

运算符

运算符名称

运算次序

1

()

Parentheses

left to right

()

Method Call

left to right

[]

Array Subscript

left to right

.

Object member access

left to right

2

++

Postincrement/Preincrement

right to left

--

Postdecrement/Predecrement

right to left

+

Unary plus

right to left

-

Unary minus

right to left

Unary logical negation

right to left

~

unary bitwise complement

right to left

3

(type)

Unary casting

right to left

new

Creating Object

right to left

4

*

Multiplication

left to right

/

Division

left to right

%

Remainder

left to right

5

+

Addition or string concatenation

left to right

-

Subtraction

left to right

6

<<

Left shift

left to right

>>

Right shift with sign extension

left to right

>>>

Right shift with zero extension

left to right

7

<

Less than

left to right

<=

Less than or equal to

left to right

>

Greater than

left to right

>=

Greater than or equal to

left to right

instanceof

Checking object type/type comparison

left to right

8

==

Equal comparison

left to right

!=

Not equal

left to right

9

&

bitwise AND/unconditional AND

left to right

10

^

bitwise exclusive OR/boolean logical exclusive OR

left to right

11

|

bitwise inclusive OR/boolean logical inclusive OR

left to right

12

&&

conditional AND

left to right

13

||

conditional OR

left to right

14

?:

conditional

right to left

15

=

assignment

right to left

+=

Addition assignment

right to left

-=

Subtractionassignment

right to left

*=

Multiplication assignment

right to left

/=

Division assignment

right to left

%=     

Remainder assignment

right to left

16

&=

bitwise AND assignment

right to left

|=

bitwise inclusive OR assignment

right to left

^=

bitwise exclusive OR assignment

right to left

<<=

bitwise left shift assignment

right to left

>>=

bitwise signed-right-shift assignment

right to left

>>>=

bitwise unsigned-right-shift assignment

right to left

注意:运算符的优先级自上到下,由高到低。同一组中的运算符优先级相同。

引用数据类型reference type分为:

数组array  类:class  接口:interface;枚举:enum  注解:annotation

 

import java.util.Scanner;
public class GradeIf {
    public static void main(String[] args) {
        System.out.println("Please input the score:");
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        char grade = ‘A‘;
if (score >= 90) {
            grade = ‘A‘;
        } else if (score >= 80) {
            grade = ‘B‘;
        } else if (score >= 70) {
            grade = ‘C‘;
        } else if (score >= 60) {
            grade = ‘D‘;
        } else{
            grade = ‘E‘;
        } 
            System.out.println("Grade = " + grade);
    }
}

   switch语句



import java.util.Scanner; public class Grade { public static void main(String[] args) { System.out.println("Please input the score:"); Scanner scanner = new Scanner(System.in); int score = scanner.nextInt(); switch(score/10){ case 10: case 9: System.out.println("优秀!"); break; case 8: System.out.println("良好!"); break; case 7: System.out.println("中等!"); break; case 6: System.out.println("及格!"); break; default: System.out.println("不及格!"); } }
注意switch 与 case break default 的搭配!!!!!!!!

while语句

 

public class WhileOP {
    public static void main(String[] args) {
        int count = 5;// 循环上限
        int i = 1;// 迭代指示器
        while (i < count) {
            System.out.println("当前是: " + i);
            i++;
        }
    }
}

 

do-while语句

 

public class DoWhileOP {
    public static void main(String[] args) {
        int count = 5;// 循环上限
        int i = 1;// 迭代指示器
        do {
            System.out.println("当前是: " + i);
            i++;
        } while (i < count);//注意do{}后面是没有分号的,而while()后面有分号
    }
}

 while do 和 do while
  循环次数一样

for(initialization;condition;update){

    statements;

}

举例如下:

public class ForOP {
    public static void main(String[] args) {
        int count = 5;// 循环上限
        for (int i = 0; i < count; i++) {
            System.out.println("当前是: " + i);
        }
    }
}

3.3控制转移语句

break语句:在循环中用于立即从当前循环终止控制

continue语句:从其调用处跳至循环的开始处

return语句 :其之后的语句将不再执行

 

以上是关于JAVA语法基础的主要内容,如果未能解决你的问题,请参考以下文章

Java 基础语法方法的使用

7.JSP基础语法,指令和标签以及Java Bean

JSP简介和基础语法

Java Web学习总结JSP

Java Lambda

如何进行 Java 代码阅读分析?