栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基本语法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基本语法

关键字:

        定义:被Java赋予了特殊含义,用做专门用途的字符串(单词)。

        特点:关键字中所有字母都为小写。

类别关键字说明
访问控制private私有的
protected受保护的
public公共的
default默认
类、方法和变量修饰符abstract声明抽象
class
extends扩充,继承
final最终值,不可改变的
implements实现(接口)
interface接口
native本地,原生方法(非 Java 实现)
new新,创建
static静态
strictfp严格,精准
synchronized线程,同步
transient短暂
volatile易失
程序控制语句break跳出循环
case定义一个值以供 switch 选择
continue继续
default默认
do运行
else否则
for循环
if如果
instanceof实例
return返回
switch根据值选择执行
while循环
错误处理assert断言表达式是否为真
catch捕捉异常
finally有没有异常都执行
throw抛出一个异常对象
throws声明一个异常可能被抛出
try捕获异常
包相关import引入
package
基本类型boolean布尔型
byte字节型
char字符型
double双精度浮点
float单精度浮点
int整型
long长整型
short短整型
变量引用super父类,超类
this本类
void无返回值

 注:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用、但可以包含。


保留字:

        概述:现有Java版本尚未使用,但以后版本可能会作为关键字使用。

保留关键字goto是关键字,但不能使用
const是关键字,但不能使用

标识符:

        概述:Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符(凡是自己可以起名字的地方都叫标识符)、在起名字时,为了提高阅读性,要尽量有意义,“见名知意”、java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

        定义合法标识符的规则:
                由26个英文字母大小写,0-9 ,_或 $ 组成
                数字不可以开头。
                不可以使用关键字和保留字,但能包含关键字和保留字。
                Java中严格区分大小写,长度无限制。
                标识符不能包含空格。

注:定义标识符规则必须严格遵守,否则编译不通过!

        定义合法标识符的规范:
                包名:多单词组成时所有字母都小写:xxxyyyzzz
                类名、接口名:多单词组成时,所有单词的首字母大写(大驼峰):XxxYyyZzz
                变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(小驼峰):xxxYyyZzz
                常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注:Java命名规范不遵守也可编译运行,但如果在遵守易于对代码的理解。 


变量: 

        定义:

                内存中的一个存储区域、该区域的数据可以在同一类型范围内不断变化
                变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

        作用:

                用于在内存中保存数据

        使用变量时的注意:

                Java中每个变量必须先声明,后使用
                使用变量名来访问这块区域的数据
                变量的作用域:其定义所在的一对{ }内
                变量只有在其作用域内才有效
                同一个作用域内,不能定义重名的变量;(但成员变量和局部变量可以同名,调用时用的是成员变量,但不建议这样。)

        变量的声明格式:

                只声明:

                        语法:数据类型 变量名;

                        如:int age;

                只赋值:

                        语法:变量名 = 值;

                        如:age = 12;

                声明且赋值:

                        语法:数据类型 变量名 = 值;或 数据类型 变量名 = 值 ,数据类型 变量名 = 值 ;

                        如:int age = 12; int age,num=12; int age=12,num=12;

        变量的分类:

                按数据类型分:Java是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。

                ◆ 实例变量:

                        实例变量声明在一个类中,但在方法、构造方法和语句块之外。

                        当一个对象被实例化之后,每个实例变量的值就跟着确定,且每实例一个对象,他们的变量值都是独立的。

                        实例变量在对象创建的时候创建,在对象被销毁的时候销毁

                        实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息

                        实例变量可以声明在使用前或者使用后

                        访问修饰符可以修饰实例变量

                        实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见

                        实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定

                        实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName

                ◆ 类变量:

                        类变量也叫静态变量,在类中以 static 关键字声明,但必须在方外                      

                        无论一个类创建了多少个对象,类只拥有类变量的一份拷贝

                        静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变

                        静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量

                        静态变量在第一次被访问时创建,在程序结束时销毁

                        与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型

                        默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化

                        静态变量可以通过:ClassName.VariableName的方式访问或者实例.VariableName访问

                        类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致
                ◆ 局部变量:

                        局部变量声明在方法、构造方法或者语句块中

                        局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁

                        访问修饰符不能用于局部变量

                        局部变量只在声明它的方法、构造方法或者语句块中可见

                        局部变量是在栈上分配的

                        局部变量没有默认值,所以局部变量被声明后,必须经过初始化(除了形参外),才可以使用


数据类型:

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

bit(位): 计算机中的最小存储单位。byte(字节):计算机中基本存储单元、一字节等于八位。

整数类型:

整数类型常量的默认值是int;

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。
  • 此类型的表述值范围小,注意使用时超出表数值范围

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0;
  • 例子:short s = 1000,short r = -20000。

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0 ;
  • 例子:int a = 100000, int b = -200000。

long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L;
  • 此类型的必须带l或L,
  • 例子: long a = 100000L,Long b = -200000L。
    "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

浮点型:

浮点型常量的默认值是double,所以给double赋值的不用带d,但如果是float的需要带f或F否则就是double转float,这种的大转小需要强制类型转换。

float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f;
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:float f1 = 234.5f。

double:

  • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
  • 浮点数的默认类型为 double 类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d;
  • 例子:

    double   d1  = 7D ;
    double   d2  = 7.; 
    double   d3  =  8.0; 
    double   d4  =  8.D; 
    double   d5  =  12.9867; 

    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true (0)和 false(1);
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false;
  • 例子:boolean one = true。

char:

  • char 类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 u0000(十进制等效值为 0);
  • 最大值是 uffff(即为 65535);
  • char 数据类型可以储存任何字符,但只能存一个字符,可存中、英、数字、符号、转义字符等;
  • char类型的值用单引号''包裹
  • char类型是可以进行运算的。因为它都对应有Unicode码
  • 默认值是 'u0000'
  • 例子:char letter = 'A';。

   ​​​Java语言支持一些特殊的转义字符序列。

符号字符含义
n换行 (0x0a)
r回车 (0x0d)
f换页符(0x0c)
b退格 (0x08)
空字符 (0x0)
s空格 (0x20)
t制表符
"双引号
'单引号
\反斜杠 两个斜杠就代表不是转义 比如'\n'结果是n
ddd八进制字符 (ddd)
uxxxx16进制Unicode字符 (xxxx)

引用数据类型:

        在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了

        对象、数组都是引用数据类型

        所有引用类型的默认值都是null

        一个引用变量可以用来引用任何与之兼容的类型


数据类型间的转换:

        ◆ 数据类型转换必须满足如下规则:

                不能对boolean类型进行类型转换

                不能把对象类型转换成不相关类的对象

                在把容量大的类型转换为容量小的类型时必须使用强制类型转换

                转换过程中可能导致溢出或损失精度,例如:

int i =128;   
byte b = (byte)i;

                因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

                浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入

(int)23.7 == 23;        
(int)-45.89f == -45

        ◆ 为什么要类型转换:

                有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后才能进行计算。

        ◆ 自动类型转换:

                定义:必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

注:

        byte,short,char之间不会相互转换,他们三者在计算时会自动转换为int类型

        当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型。

        ◆ 强制类型转换:

                定义:自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。
                        通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型、条件是转换的数据类型必须是兼容的。

                格式:(type)value type是要强制类型转换后的数据类型


String字符串:

        定义:表示多个字符拼接、且需要用双引号包裹

        格式:String str = "张三";

        字符串与其他数据类型的转换:

                其他数据类型转string:

                        调用包装类的tostring()方法、或拼接字符串(+ "")

                string转其他数据类型:

                前提:string的值要在要转的数据类型值范围内

                        调用包装类的方法;


进制与进制间的转换:

        所有进制都可以赋值给整形数值;

        对于整数,进制有四种表示方式:

                二进制(binary):0,1 ,满2进1.以0b或0B开头。
                十进制(decimal):0-9 ,满10进1。
                八进制(octal):0-7 ,满8进1. 以数字0开头表示。
                十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。
                        如:0x21AF +1= 0x21B0

        二进制:

                Java整数常量默认是int类型,当用二进制定义整数时,其第32位(最高位)是符号位;当是long类型时,二进制默认占64位,第64位是符号位

                二进制的整数有如下三种形式:
                        原码:直接将一个数值换成二进制数。最高位是符号位
                        负数的反码:是对原码按位取反,只是最高位(符号位)确定为1(就是符号位不变)。
                        负数的补码:其反码加1

                注:计算机以二进制补码的形式保存所有的整数。
                 正数的原码、反码、补码都相同
                负数的补码是其反码+1

                为什么要使用原码、反码、补码表示形式呢?

                        计算机辨别“符号位”显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。

        进制间的转换:

        二进制与十进制互转:

                除符号位外,其他有值的位置,从二的零次幂开始(有值的为位置),相加

                数值除二取余的逆;

 二进制与八进制互转:

        二进制中的三位的值代表八进制中的一位,同理 八进制中的一位代表二进制中的三位 

 二进制与十六进制互转:

        定义:二进制的四位代表十六进制的一位,同理十六进制的一位代表二进制的四位

        


运算符:

        定义:是一种特殊的符号,用以表示数据的运算、赋值和比较.

算数运算符:

操作符描述例子
+加法 - 相加运算符两侧的值A + B 等于 30
-减法 - 左操作数减去右操作数A – B 等于 -10
*乘法 - 相乘操作符两侧的值A * B等于200
/除法 - 左操作数除以右操作数B / A等于2
取余 - 左操作数除以右操作数的余数B%A等于0
++自增: 操作数的值增加1  前++等于先运算后赋值 后++等于先赋值后运算B++ 或 ++B 等于 21
--自减: 操作数的值减少1 前--等于先运算后赋值 后--等于先赋值后运算B-- 或 --B 等于 19
+正号+3
-负号-3
+字符串连接符3+"字符串"

拓展(获取各个位置的值):

  

注:

        ++或--不论是前后在运算时不会改变数据的类型。

        如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。

        对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。

        “+”除字符串相加功能外,还能把非字符串转换成字符串。

赋值运算符:

操作符描述例子
=简单的赋值运算符,将右操作数的值赋给左侧操作数、当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理,且支持连续赋值C = A + B将把A + B得到的值赋给C
+ =加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C + = A等价于C = C + A
- =减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C - = A等价于C = C - A
* =乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C * = A等价于C = C * A
/ =除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C / = A,C 与 A 同类型时等价于 C = C / A
(%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数C%= A等价于C = C%A
<< =左移位赋值运算符 其他介绍见下位运算符C << = 2等价于C = C << 2
>> =右移位赋值运算符 其他介绍见下位运算符C >> = 2等价于C = C >> 2
&=按位与赋值运算符 其他介绍见下位运算符C&= 2等价于C = C&2
^ =按位异或赋值操作符 其他介绍见下位运算符C ^ = 2等价于C = C ^ 2
| =按位或赋值操作符 其他介绍见下位运算符C | = 2等价于C = C | 2

注:拓展赋值运算符,运算时也不会改变数据类型,如:int i=3; i += 0.3=1;

比较运算符:

运算符描述例子
==检查如果两个操作数的值是否相等,如果相等则条件为真。(A == B)为假。
!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。(A != B) 为真。
检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A> B)为假。
检查左操作数的值是否小于右操作数的值,如果是那么条件为真。(A
>=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。(A> = B)为假。
<=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。(A <= B)为真。
instanceof检查该对象是否是一个特定类型(类类型或接口类型)的对象

注:

        比较运算符的结果都是boolean型,也就是要么是true,要么是false。

        比较运算符“==”不能误写成“=” 。

逻辑运算符:

操作符描述例子
&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真、且当一个为假时另一个也参与运算
&&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。且当一个为假时另一个不参与运算(A && B)为假。
|称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。且当一个为真时另一个也参与运算
| |称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。且当一个为真时另一个不参与运算(A | | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。!(A && B)为真。
^逻辑异或:当两个值不一样时,为true,否则为false

注:

        逻辑运算符用于连接布尔型表达式,在Java中不可以写成33 & x<6 。

位运算符:

操作符描述例子
如果相对应位都是1,则结果为1,否则为0(A&B),得到12,即0000 1100
|如果相对应位都是 0,则结果为 0,否则为 1(A | B)得到61,即 0011 1101
^如果相对应位值相同,则结果为0,否则为1(A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。每往左移一位就代表数值乘于2的几次幂 A << 2得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。每往左移一位就代表数值除于2的几次幂 A >> 2得到15即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。每往左移一位就代表数值除于2的几次幂 A>>>2得到15即0000 1111

注:位运算是直接对整数的二进制进行的运算。

拓展(转换数据值):

三元运算符:

        格式:
                (条件表达式)?表达式1:表达式2;

        定义:为true,运算后的结果是表达式1;为false,运算后的结果是表达式2;且表达式1的结果类型,应与表达式2的结果类型一直,或符合自动类型提升的数据类型。

三元运算符与if-else的联系与区别:

        三元运算符可简化if-else语句

        三元运算符要求必须返回一个结果。

        if后的代码块可有多个语句

        三元运算符和ifelse都可以嵌套使用

 Java运算符优先级:

类别操作符关联性
后缀() [] . (点操作符)左到右
一元expr++ expr--从左到右
一元++expr --expr + - ~ !从右到左
乘性 * /%左到右
加性 + -左到右
移位 >> >>>  << 左到右
关系 > >= < <= 左到右
相等 ==  !=左到右
按位与左到右
按位异或^左到右
按位或|左到右
逻辑与&&左到右
逻辑或| |左到右
条件?:从右到左
赋值= + = - = * = / =%= >> = << =&= ^ = | =从右到左
逗号左到右

程序流程控制;

        意义:流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

顺序机构:

        程序从上到下逐行地执行,中间没有任何判断和跳转。

分支结构:

        定义:根据条件,选择性地执行某段代码。

        if/else:

                格式一:

                         if(条件表达式){
                                执行代码块;
                        }

                格式二(二选一):

                        if(条件表达式){
                                执行代码块1;
                        }else{
                                执行代码块2;
                        }

                格式三:

                        if(条件表达式1){
                                执行代码块1;
                        }else if (条件表达式2){
                                执行代码块2;
                        }
                        ……
                        else{
                                执行代码块n;
                        }

                使用说明:

                        条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

                        语句块只有一条执行语句时,一对{}可以省略,但建议保留

                        if-else语句结构,根据需要可以嵌套使用

                        当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

                        当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是“包含”关系时,“小上大下 / 子上父下”

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号