Java的基础语法(详解)

Java的基础语法

1. 注释、标识符、关键字

  1. 注释:

    注释并不会被执行,是给我们程序员看的

    书写注释是一个非常好的习惯

Java中的注释有三种:

​ 单行注释: //

​ 多行注释:/* */

​ 文档注释: /** */ (每行注释前都会有星号 说明注释允许你在程序中嵌入关于程序的信息。你可以使用javadoc 工具软件来生成信息,并输出到HTML文件中。说明注释,使你更加方便的记录你的程序信息。)

  1. 标识符:

Java中所有的组成部分都需要名字。 类名、变量名以及方法名都被称为标识符。

所有的标识符都应该以字母 (A-Z或者a-z) ,美元符($)、或者下划线( )开始

首字符之后可以是字母 (A-Z 或者a-z) ,美元符($) 、下划线( )或数字的任何字符组合

不能使用关键字作为变量名或方法名。

标识符是大小写敏感的

合法标识符举例: age、$salary、. value、 1_ value

非法标识符举例: 123abc、-salary、 #abc

可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low(建议驼峰式)

String name = "Obito";
String mingzi = "Obito";
  1. 关键字: Java关键字是预先定义的具有特别意义的标识符,也可以叫Java保留字,Java关键字不能用作变量名、方法名、类名、包名和参数。

2.数据类型

强类型语言:

​ 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

弱类型语言:
Java中的数据类型分为两大类

​ 基本类型:基本数据类型包括 boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和 double (双精度浮点型)共 8 种

​ 引用类型:引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。另外,Java 语言中不支持 C++ 中的指针类型、结构类型、联合类型和枚举类型。引用类型还有一种特殊的 null 类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是 Java 语言里不再使用指针这个说法。

在这里插入图片描述

什么是字节?

位(bit):是计算机 内部数据 储存的最小单位

字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示

1B(字节) = 8 bit(位)

1 bit 表示 1 位 1Byte表示一个字节 1B = 8b

1024B = 1KB 1024KB = 1M 1024M = 1G 1024G = 1TB

字符:是指计算机中使用的字母、数字、字和符号

3.类型转换

​ 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

​ 运算中,不同类型的数据先转化为同一类型,然后进行运算

​ 强制类型转换: (类型)变量名 由高字节—低字节

​ 自动类型转换: 不需要操作 由低字节—高字节

注意点:

1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转换到低容量的时候,需强制转换
4. 转换的时候可能存在内存溢出,或者精度问题!

4. 变量、常量

变量:就是可以变化的量

Java是一种强类型语言,每个变量都必须声明其类型。

Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域

// 数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量

注意事项:

​ 每个变量都有类型,类型可以是基本类型,也可以是引用类型。

​ 变量名必须是合法的标识符

​ 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

变量的命名规范:

所有变量、方法、类名—见名知意(英文)

类成员变量:首字母小写和驼峰原则:monthSalary

局部变量:首字母小写和驼峰原则

常量:大写字母和下划线:MAX_VALUE

类名:首字母大写和驼峰原则:GoodMan

方法名:首字母小写和驼峰原则:getName,setName

常量:初始化之后就不能再改变的量

所谓的常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

// final 常量名 = 值;
   final double PI = 3.14;

常量名一般使用大写符号。

5. 运算符

一、 算术运算符:

算术运算符用在数学表达式中,它们的作用和数学中的作用一样,看下列表格

假设A = 10, B = 20

运算符描述例子
+加法:相加运算符两侧的值A + B 等于 30
-减法:左操作数减去右操作数A - B 等于 -10
*乘法:相乘操作符两侧的数A * B 等于 200
/除法:左操作数除以右操作数A / B 等于 2
%取余:左操作数除以右操作数的余数A % B 等于 0
++自增:操作数的值加1A++ 或 ++A 等于11
自减:操作数的值减1A-- 或 --A 等于 9

注意:

前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算(先加/减 后用)

后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算 (先加/减 后用)

二、 关系运算符

下表中A = 10, B = 20;

运算符描述例子
==检查两个操作数的值是否相等,如果相等,则条件为真(A == B)为假
!=检查两个操作数的值是否不相等,如果不相等,则条件为真(A != B)为真
>检查左操作数的值是否大于右操作数的值,如果大于,则条件作为真(A > B)为假
<检查左操作数的值是否小于右操作数的值,如果小于,则条件作为真(A < B)为真
>=检查左操作数的值是否大于或等于右操作数的值,如果大于或等于,则条件作为真(A >= B)为假
<=检查左操作数的值是否小于或等于右操作数的值,如果小于或等于,则条件作为真(A <= B)为真

注意:

所有的关系运算符的运算结果都是布尔类型,不是true就是false,不可能是其他值。

三、 位运算符

下表中A = 60, B = 13;

操作符描述例子
&按位与:如果对应位都是1,则结果为1,否则为0(全1则1,否则为0)(A & B) 得到12 即 0000 0011
|按位或:如果对应位都是0,则结果为0,否则为1(全0则0,否则为1)(A | B)得到61, 即 0011 1101
^按位异或:如果对应位的值相同,则结果为0,否则为1(A ^ B) 得到49, 即0011 0001
~按位非:会 翻转操作数的每一位,即0变为1,1变为0(包括符号位)(~ A)得到 -61, 即 1100 0011
<<按位左移运算符,左操作数按位左移右操作数指定的位数(左移一位,就相当于给操作数乘2) *2(A<<2) 得到240,即 1111 0000
>>按位右移运算符,左操作数按位右移右操作数指定的位数(右移一位,就相当于给操作数除2) /2(A>>2) 得到15, 即 1111
>>>按位右移补零操作符,左操作数的值按右操作数指定的位数右移,移动得到的空位以零补充(A>>>2) 得到15,即0000 1111

因为计算机内部使用的都是二进制数,所以位运算的是效率是最高的。

java面试题:如何最有效率的算出2 乘以 8:

int  a = 2<<3;
// int a = 2*8;

因为将一个数左移n 位,就相当于乘以了2 的n 次方,那么,一个数乘以8 只要将其左移3 位
即可,而位运算是cpu 直接支持的,效率最高,所以,2 乘以8 等於几的最效率的方法是 2 << 3 ,而不是 2*8

四、 逻辑运算符

操作符含义结果
&逻辑与(即 并且)两边都是true,结果才为 true
|逻辑或(即 或者)只要有一个true,结果就是 true
!逻辑非(取反)!true = false, !false = true
&&短路与两边都是true,结果才为 true
||短路或只要有一个true,结果就是 true
  1. 使用短路与 && 的时候,当左边的表达式为false的时候,右边的表达式不执行
  2. 使用短路或 || 的时候当左边的表达式结果是true的时候,右边的表达式不执行

位运算符与逻辑运算符的区别:

1.逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。

2.逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。

注意:

逻辑运算符两边要求都是布尔类型,并且最终的运算结果也是布尔类型

五、 赋值运算符

运算符含义例子
=赋值,将右边的值赋给左边a = 3
+=加等, 原先的基础上加上这个数a += 3 即 a = a+3
-=减等(同理)
*=乘等(同理)
/=除等(同理)
%=模等(同理)

六、 其他运算符

条件运算符:(三目运算符)

语法格式:

布尔表达式 ? 表达式1 : 表达式2

语法规则:

布尔表达式的结果为 true 时,则执行 表达式1

布尔表达式的结果为 false 时,则执行 表达式2

字符串连接运算符:

当 + 运费符两边都是 数字类型 的时候,是求和

当 + 运算两边的 任意一边 是 字符串类型,则是会进行字符串的拼接

注意:

遵循 从左到右 的顺序

如果数字相加在与 字符串 相加之前,则会先进行数字加法 然后在与字符串进行拼接

如果字符串相加 在数字相加之前, 则直接进行字符串拼接,不进行数字加法

System.out.println(2 + 3 + "Obito");    // 会输出 5Obito
System.out.println("Obito" + 2 + 3);		// 会输出 Obito23

6. 包机制、JavaDoc

包机制:为了更好的组织类,Java提供了包机制,用于区别类名和命名空间(包的本质就是文件夹)

一般利用公司域名倒置作为包名; 如 com.baidu.www

为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句即可完成此功能

如最常用的导入Scanner包

impor java.util.Scanner
import com.baidu.www.*     // 就是导入www包下的所有类

JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API


版权声明:本文为geist_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。