Java—(后端开发)–语言基础–基础语法
1、关键字
关键字可以概括为有特定意义的字符串,java中的字符串都是小写
//八大基本数据类型
byte、short、int、long
double、float、char、boolean
//类关键字,接口关键字,继承关键字
class、interface、extends
//流程控制
if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。
//修饰符
public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。
//动作
package、import、throw、throws、extends、implements、this、supper、instanceof、new。
//保留字
true、false、null、goto、const。
2、注释
注释:java 中的注释不会出现在任何可执行程序中
行内注释 : 在每行开头标价// ,注释内容是从// 开始到本行结尾
多行注释:使用/* 和*/注释界定符将一段比较常的注释括起来
文档注释:以/** 开始,以 / 结束,这种注释可以用来自动生成文档;
注意:在java 中,/**/ 注释不能嵌套,也就是说,不能简单的把代码用 / * 和 /括起来作为注释,因为这段代码本身可能也包含一个*/ 界定符
3、标识符
java 中用来给变量、方法、类、接口等命名的名称 称为标识符;(名称 = 标识符)
标识符的命名规则:
(1)、包名:所有字母一律小写。如:com.abc.demo。
(2)、类名和接口名:每个单词的首字母大写,其余小写。如:StudentDemo,HelloWorld。
(3)、常量名:所有字母都大写,单词间以下划线(_)连接。如:DAY_OF_MONTH。
(4)、变量名和方法名:第一个单词首字母小写,从第二个单词开始每个单词首字母大写。即驼峰式命名法。如:chineseScore,getTotalMoney()。
(5)、在程序中,应尽量使用有意义的英文单词来定义标识符,即见名知义,这样便于阅读。如:password表示密码,name表示姓名等
4、基本数据类型
java 是一种强类型语言,必须为每个变量声明一种类型;
java 中的数据类型主要分为4类8种:4种整型、2种浮点类型、1种字符类型和一种布尔类型
1、整数类型:
整型用于表示没有小数部分的值,允许是负数
int
4个字节
取值范围:-2147483648 ~ 2147483648(刚好超过20亿)
short
2个字节
取值范围:-32768 ~ 32767
long
8个字节
取值范围:
byte
1字节
取值范围:-128 ~127
2、浮点类型
浮点类型用于表示有小数部分的数值
float
4字节
取值范围:大约±3.40282347E+38F(有效位数约为6~7位)
float 类型的数字有一个后缀 f或F,没有后缀的默认是double
double
8字节
有效位数大为15位
注意:浮点数值不适用于无法接受舍入误差的金融计算 金融计算应该使用BigDecimal 类
3、char(字符) 类型
char 类型原本是用于表示单个字符的,不过现在有些Unicode 字符可以用一个char 值描述;
char 类型的值可以表示为16进制值,其范围从 \u0000 到 \uFFFF
例如:\u2122表示商标符号(™) \u03C0 表示希腊字母π
4、布尔类型 boolean
bollean 只有两个值 false 和 true,用来判定逻辑条件
整型和布尔类型之间不能进行相互转换
5、数据类型转换
将一种数值类型砖混为另外只用数值类型,但有些转换会造成数值丢失,损失精度
强制类型转换例:例如double 类型转换为 int 类型
double x = 9.9997;
int nx = (int)x;// 变量nx 的值为9
5、变量与常量
1、常量
常量就是值不变的变量
使用关键字 final 指示常量 - final 修饰后表示这个变量只能被赋值一次,一旦赋值就不能再更改;
常量名 - 常量名通常全部使用大写字母;
注意:
类常量的定义位于main方法的外部,同一个类的其他方法也可以使用这个常量;
如果一个常量被声明为public ,name其他类的方法也可以使用这个常量;
2、变量
每个变量都有一个类型(type);
在声明变量之前,需要先指定变量的类型,然后是变量名;
可以在一行中声明多个变量:(不提倡这个风格)
int i,j ;
变量名 :
必须遵循驼峰命名标准,变量名大小写敏感
不能使用java 保留字作为变量名
注意:
声明一个变量后,要使用必须使用赋值语句对变量进行初始化,千万不要使用未初始化的变量;
3、枚举类型
变量的取值只在一个有限的集合内;
自定义枚举类型,枚举类型包括有限的命名值:
// 自定义枚举
enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE}
// 声明这种类型的变量
Size s = Size.MEDIUM
// Size 类型的变量只能存储这个类型声明中给定的某个枚举值,或特殊值null,null表示这个变量没有设置任何值
6、运算符
运算符用于连接值
1、算数运算符
(+ - * / %)加 减 乘 除 取模
2、逻辑运算符
( 与 - && 、或 - ||、非 - !)
3、关系运算符
4、位运算符
( >> 、 << 、>>> )
3、数学函数
//在Math类中,包含了各种各样的数学函数;
//java中没有幂运算,因此需要借助Math 类中的pow方法
double y = Math.pow(x,a); // 将x的a次幂 = y
4、结合赋值与运算符
二元运算符
x +=4;
x = x+4;
//自增 自减运算符
a++
a--
7、//字符串
从概念上讲,java字符串就是Unicode 字符序列 - String
1、子串
String 类的substring方法可以从一个较大的字符串中提取一个子串
String greeting = “Hello”;
String s = greeting.substing(0,3); // s 的字符为"Hel"
2、拼接
java 语言允许使用+号连接(拼接)两个字符串
将一个字符串与一个非字符串的值进行拼接,后者会转换成字符串(任何一个java对象都可以转换成字符串)
String 每次拼接字符串都会构建一个新的String 对象
3、检测字符串是否相等
可以使用equals 方法检测两个字符串是否相当
s.equals(t);
注意:千万不要使用 == 运算符来检测两个字符串是否相等;
4、使用StringBuilder 类构建一个字符串
// 首先构建一个空的stringbuilder 字符串构建器
StringBuilder builder = new StringBuilder();
// 每次需要添加一部分内容,就直接调用append 方法
builder.append(ch);
builder.append(str);
// 最后调用toSring 方法,就可以得到一个字符串对象
String completedString = builder.toString();
8、控制流程
1、顺序结构
自上而下的执行
2、选择结构
if //单选择结构
if - else //双选择结构
if - else if - else //多选择结构
switch
//(JDK7 支持了String类型)
case//穿透现象
break
default
3、分支结构(循环结构)
while://尽量避免死循环
do... while
for - //可计次数一般用for循环 ,不可计次数一般用while 循环
for(int i=0;i<100;i++)
//经典案例
- 99 //乘法表
//增强for循环
break & continue
break //跳出循环
continue //终止当此循环,继续下次循环
//(带标签的continue 废弃的)
return //结束方法的运行;
9、大数
如果基本的整数和浮点数精度都不能满足需求,那么可以使用java.math 包中两个很有用的类
这两个类可以处理包含任意长度数字序列的数值
BigInteger
可以实现任意精度的整数运算
BigDecimal
可以实现任意精度的浮点数运算
使用静态的 valueOf 方法可以将普通的数值转换为大数:
BigInteger a = BigInteger.valueOf(100);
对于更大的数,可以使用一个带字符串参数的构造器:
BigInteger reallyBig = new BigInteger("1232321312312312312312312312312324575868947474646894644")
注意:
不能使用我们熟悉的算数运算符(如:+ 、*) 处理大数,需要使用大数类的add 和multiply 方法进行运算;
BigInteger c = a.add(b) // c = a + b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); d = c*(b+2)
10、 数组
数组: 用来存储相同类型值得序列;
1、定义数组
int[] a = new int[5] // or var a = new int[5]
int[] a = {1,2,3,4,5};
//声明匿名数组:
new int[] {1,2,3,4,5}
//数组必须是同一个类型
2、数组的使用
通过下标拿到值
ArrayIndexoutofBounds - 数组下标越界异常
通过增强for循环遍历数组元素
for each 增强for 循环
for(a: b){
}
数组拷贝
java中允许将一个数组变量拷贝到另外一个数组变量,这时,两个数组变量将引用同一数组;
将一个数组所有值拷贝到一个新数组中,使用Arrays类的copyOf 方法:
int[] copiedLuckyNumbers =Arrays.copyOf(luckyNumbers,luckyNumbers.length);// 第二个参数是新数组的长度,这个方法通常用来增加数组的大小;
注意:如果数组元素是数值型,那么额外的元素将被赋值为0;如果数组元素是布尔型,则将赋值为false。相反,如果长度小于原始数组,则只拷贝前面的值;
数组排序
数值型数组排序
使用Arrays类中的sort 方法 - 使用了 快速排序(QuickSort)算法
3、多维数组
多维数组将使用多个下标访问数组元素
例如:
int[][] a = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
注意:java 中实际上没有多维数组,只有一维数组。多维数组实际就是“数组的数组” - (套娃数组)
4、数组算法
二分查找
冒泡排序
选择排序
直接插入排序
希尔排序
快速排序
归并排序
基数排序
堆排序
11、方法
1、什么是方法?语句块的集合
2、方法的定义
修饰符 返回值 方法名(参数名){
return 返回值;
}
3、方法的调用类名.方法对象.方法
4、方法重载名字相同,方法形参列表不同;
5、命令行传参 - 给mian 方法传递参数 (涉及JVM调优)main 方法是自带了参数的,可以通过命令行的方式传递参数进运行程序;
12、JavaDoc - JDK工具
1、JDK 帮助文档由源文件生成一个HTML文档
2、命令 javadoc 生成文档
@author 作者
@Version 版本
@Since 最早支持哪个java版本
@param 参数
@return 返回值
@throws 抛出的异常