1.单行注释:“//”
2.多行注释:“/ /”
if条件语句
1.
if(bloolean 表达式){
pass;
}
//若条件语句后的语句序列省略,则表达方式为
if(a);
//或
if(a){}
2.
//if else语句
if(boolean 表达式){
pass;
}
else{
pass;
}
3.
//if else if多分支语句
if(boolean 表达式1){
pass 1;
}
else if(boolean 表达式2{
pass 2;
}
...
else if(boolean 表达式n){
pass;
}
switch多分支语句
switch(int/char/String){
case constant 1:
pass 1;
[break];
...
case constant n:
pass n;
[break];
[default]:
pass n+1;
[break];
}
同一个switch语句,case的常量值必须互不相同
continue语句
跳过本次循环,执行下一次循环
标签名:循环体{
continue 标签名;
}
声明字符串
声明格式:String str ="";
声明字符串变量必须经过初始化才能使用
创建字符串
方法
1.String(char[] a)
参数列表(数组a)
char[] a={'h','e','l','l','o'};
String s=new String(a);
//等价于
String s=new String("hello");
2.String(char[]a,int offset,int length)
参数列表:(数组a,截取的位置offset,截取字符串的长度length)
char[] a={'w','o','r','l','d'};
String s=new String(a,2,3);//String s=数组a从第三个位置截取,截取,截取3个字符的程度//等价于
String s=new String("rlf");
Chapter3
lecture1
public class First {
static String s1="你好";//成员变量
public static void main(String[] args) {
String s2="Java";局部变量
System.out.println(s1);
System.out.println(s2);
}
}
Java语言严格区分大小写
public:权限修饰符;
static: 静态修饰符;
void: 返回值修饰符;
String[] args:字符串类型的数组(main方法的参数);
main():程序开始执行的位置
不能以0作为十进制数的开头(0除外)
八进制必须以0开头
十六进制必须以0X或0x开头
整型数剧类型
数据类型 内存空间 取值范围
byte 8位 -128~127
short 16位 -32768~32767
int 32位 ……
long 64位 ……
浮点数据类型
数据类型 内存空间 取值范围
float 32位 1.4E-45~3.4028235E38
double 64位 4.9E-324~…………
char型
char x='a';
字符a在unicode表中的排序位置是97,so:
char x=97;
\t垂直制表符,将光标移到下一个制表符的位置
\r回车
\n换行
\b退格
\f换页
布尔类型又称逻辑类型,通过关键字boolean来定义布尔类型变量,只有true和false两个值
Java语言规定标识符由任意顺序的字母、下划线(_)、美元符号($)和数字组成,并且第一个字符不能是数字。标识符不能是Java中的保留关键字。
合法标识符:
name
user_age
$page
非法标识符:
4word
String
User name
声明变量
例:int age; /声明int型变量
char char1='r'; /声明char型变量并赋值
声明常量
例:final double PI=3.1415926D //声明double型常量PI并赋值
final boolean BOOL=true //声明boolean型常量BOOL并赋值
class var{
int x=45; //实际变量
static int y=90//静态变量(称类变量)
}
成员变量的类型前面加上关键字static称为静态变量
“按位取反”运算也称为“按位非”运算,运算符为“~”,为单位运算符,运算法则:将操作二进制中的1修改为0,0修改为1。
“按位异或”运算的运算符是“^”,为双目运算符,运算法则:当两个操作的二进制表示相同(同时为0或者为1)时,结果为0,否则为1。
移位运算符
<<:左移
“>>”:右移
“>>>”:无符号右移
左移左边移空的部分补0;
右移:当时用">>"时,如果最高位是0,左移空的位置填0;如果最高位是1,右移空的位置就填入1;
无符号右移:无论最高位是0还是1,左侧被移空的高位都填入0
移位运算符适用的数据类型有byte,short,char,int和long
三元运算符:若条件式的值为true,则整个表达式取值1,否则取值2
运算符优先级
由高至低顺序:
增量和减量运算
算术运算
比较运算
逻辑运算
赋值运算
优先级 描述 运算符
1 括号 ()
2 正负号 +,-
3 一元运算符 ++,--,!
4 乘除 *,/,%
5 加减 +,-
6 移位运算 >>,>>>,<<
7 比较大小 <,>,>=,<=
8 比较是否相等 ==,!=
9 按位与运算 &
10 按位异或运算 ^
11 按位或运算 |
12 逻辑与运算 &&
13 逻辑或运算 ||
14 三元运算符 ? :
15 赋值运算符 =
使用int型变量给float型变量赋值,此时int型变量将隐式转换为float型变量
int x=50; //声明int型变量x
float y=x; //将x赋值给y
隐式类型转换规则
int-long-float-double
显式类型转换
int a=(int)45.23 //此时输出a的值为45
long y=(long)456.6F//此时输出y的值为456
int b=(int)'d' //此时输出b的值为100
当把一个整数赋值给一个byte,short,int,long型变量时,不可以超出这些变量的取值范围,否则必须进行强制类型转换,例:
byte b=(byte)129;
本章学习漏洞:
1.类的属性称为类的全局变量(成员变量),声明在类体中;方法中的属性称为局部变量,声明在方法体中。
成员变量有效范围:在整个类体中都有效;
局部变量有效范围:只在当前代码块中有效(“{}”范围内);生命周期–方法被调用时,Java虚拟机为方法中的局部变量分配内存空间,方法调用结束后,成员变量被隐藏。
2.标识符的定义:一个名字,用来标识类名,变量名,方法名,数组名,文件名的有效字符序列。
命名规则:由任意顺序的字母,下划线(_),美元符号($) 和数字组成,并且第一个字符不能是数字。标识符不能是Java中的保留关键字。
3.声明常量:
final 数据类型 常量名称[=值];
4.&&:逻辑与 ;||:逻辑或
5.移位运算符作用:一个数左移n位,相当于乘以2n;一个数右移n位,相当于除以2n。
6.三元运算符格式:返回值 = 条件式?值1:值2;
三元运算符等价于if else语句
例:
boolean a; //声明boolean型变量
if(20<45) //将20<45作为判断条件
a=true; //条件成立将true赋值给a
else
a=false; //条件不成立将false赋值给a
lecture2
在Java语言中字符串必须包含在一对双引号("")之内
在Java中由双引号("")包围的都是字符串,不能作为其他数据类型来使用,如"1+2"的输出结果不可能是3。
通过以下语法格式来声明字符串变量:
String str=[null]
String:指定该变量为字符串类型。
str:任意有效标识符,表示字符串变量的名称。
null:如果省略null,表示str变量是未初始化的状态,否则表示声明的字符串的值等于null。
声明字符串变量s
String s;
声明字符串变量必须经过初始化才能使用
创建字符串
在Java语言中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。
创建对象要使用类的构造方法。String类的常用构造方法如下:
String(char a[])方法
用一个字符数组a创建String对象,例:
char a[]={'g','o','o','d'}; 等价于 String s=new String("good")
String s=new String(a);
String(char a[],int offest,int length)
提取字符数组a中的一部分创建一个字符串对象。参数offest表示开始截取字符串的位置,length表示截取字符串的长度。
char a[]={'s','t','u','d','e','n','t'}; 等价于 String s=new String("uden")
String s=new String(a,2,4);
String(char[] value)
该构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。
创建字符数组,将数组中的所有元素连接成一个String对象:
char a[]={'s','t','u','d','e','n','t'}; 等价于 String s=new String("student");
String s=new String(a);
引用字符串常量来创建字符串变量:
String str1 str2;
str1 ="We are students"
str2 ="We are students"
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个运算符并产生一个String对象。
Java中一句相连的字符串不能分开在两行写。
如果字符串分在两行书写,此时使用"+"将两个字符串连起来,之后在"+"处换行。
连接其他数据类型
如果将字符串同数据类型数据进行连接,会将这些数据直接转换成字符串。
使用String类的length()方法可获取声明的字符串对象的长度。
str.length(); //str为字符串对象
实际代码如下:
String str="We are students";
int size=str.length(); //将字符串str的长度赋值给int型变量size
字符串查找
String提供两种查找字符串的方法,即indexOf()与lastIndexOf()方法。
indexOf()方法返回的是搜索的字符或字符串首次出现的位置;
lastIndexOf()方法返回的是搜索字符或字符串最后出现的位置。
(1)indexOf(String s)
从当前字符串的开始位置搜索s的位置;如果没有搜索字符串s,该方法的返回值是-1。
str.indexOf(substr)
str:任意字符串对象。
substr:要搜索的字符串。
查找字符a在字符串str中的索引位置,例:
String str="We are students";
int size=str.indexOf("a");
(2)lastIndexOf(String str)
从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回值为-1
str.lastIndexOf(substr)
str:任意字符串对象。
substr:要搜索的字符串。
如果lastIndexOf()方法中的参数是空字符串""(注意没有空格),则返回的结果与调用该字符串length()方法的返回结果相同。
获取指定索引位置的字符
使用charAt()方法
语法如下:
str.charAt(int index)
str:任意字符串
index:整数值,用于指定要返回字符的下标
获取字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串下标是从0开始的。
substring()方法被两种不同的方法重载,来满足不同的需求
(1)substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
语法如下:
str.substring(int beginIndex); //beginIndex指定从某一索引位置处开始截取字符串
在字符串中空格占用一个索引位置
(2)substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。
beginIndex:开始截取子字符串的索引位置。
endIndex:子字符串在整个字符串中的结束位置。
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
语法如下:
str.trim()
其中,str为任意字符串对象。
字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串
语法:
str.replace(char oldChar,char newChar)
oldChar:要替换的字符或字符串。
newChar:用于替换原来字符串的内容。
replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
判断字符串的开始和结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
starWith()方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
str.startsWith(String prefix)//pefix是指作为前缀的字符。
endsWith()方法用于判断当前字符串是否以给定的字符串结束。
str.endsWith(String suffix)//suffix是指作为后缀的字符串。
判断字符串是否相等
equals()方法
如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。
str.equals(String.otherstr)
//str,ohterstr是参加比较的两个字符串对象。
equalsIgnoreCase()方法
此方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍为boolean类型
str.equalsIgnoreCase(String otherstr)
//str,otherstr是参加比较的两个字符串对象
按字典顺序比较两个字符串
compareTo()比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。
如果按字典顺序此String对象表示的字符序列位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。
str.compareTo(String otherstr)
str.compareTo()方法只有在equals(Object)方法返回true时才返回0
字母大小写转换
toLowerCase()方法
将String转换为小写。
str.toLowercase()
toUpperCase()方法
将String转换为大写。
str.toUpperCase()
字符串分割
split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。
(1)split(String sign)
可以根据给定的分割符对字符串进行拆分
str.split(String sign)
//sign为分割字符串的分割符,也可以使用正则表达式
没有统一的对字符分割的符号、如果想定义多个分割符,可使用'|'。
(2)
split(String sign,int limit)
根据给定的分割符对字符串进行拆分,并限定拆分的次数。
str.split(String sign,int limit)
sign:分割字符串的分割符,也可以使用正则表达式。
limit:限制的分割次数。
格式化字符串
String类的静态format()方法用于创建格式化的字符串。
(1)format(String formal,Object...args)
使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。
str.format(String format,Object...args)
format:格式字符串。
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。
(2)format(Local l,String format,Object...args)
l:格式化过程中要应用的语言环境。如果l为null,则不进行本地化
format:格式字符串
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参宿。此参数的数目是可变的,可以为0。
日期格式化
转换符 说明符 示例
%te 一个月中的某一天(1~31) 2
%tb 指定语言环境的月份简称 Feb、二月
%tB 指定语言环境的月份全称 February、二月
%tA 指定语言环境的星期几全称 Monday、星期一
%ta 指定语言环境的星期几简称 Mon、星期一
%tc 包括全部日期和时间信息 星期二 三月 25 13:37:22
CST 2008
%tY 4位年份 2008
%tj 一年中的第几天(001~366) 085
%tm 月份 03
%td 一个月中的第几天(01~31) 02
%ty 2位年份 08
时间格式化
转换符 说明
%tH 2位数字的24时制的小时(00~23)
%tI 2位数字的12时制的小时(01~12)
%tk 2位数字的24时制的小时(0~23)
%tl 2位数字的12时制的小时(1~12)
%tM 2位数字的分钟(00~59)
%tS 2位数字的秒数(00~60)
%tL 3位数字的毫秒数(000~999)
格式化常见的日期时间组合
常规类型格式化
字符串生成器
(1)append()方法
用于想字符串生成器中追加内容。
append(content) //contant表示要追加到字符串生成器中的内容,可以是任何类型的数据或者其他对象。
(2)insert(int offset,arg)方法
用于向字符串生成器中的指定位置插入数据内容。
insert(int offset arg) //offset:字符串生成器的位置。该参数必须大于等于0,且小于等于此序列的长度。
args:将插入字符串生成器的位置。该参数可以是任何数据类型或其他对象。
(3)delete(int start,int end)方法
移除此序列的子字符串中的字符。
delete(int start,int end)
start:将要删除的字符串的起点位置
end: 将要删除的字符串的终点位置
lecture3
复合语句
if条件语句
if(布尔表达式){
语句序列
}
布尔表达式:必要参数,表示它最后返回的结果必须是一个布尔值。
语句序列:可选参数。可以是一条或多条语句,当表达式的值为true时执行这些语句。若语句序列中仅有一条语句,则可以省略条件语句中的“{}”。
条件语句语句序列省略时,则可以保留外面的大括号,也可以省略大括号。然后在末尾添加分号“;”。
if语句只执行条件为真的命令语句,其他语句都不会执行。
在编程时,有事会使用for循环的特殊语法格式来实现无限循环。语法格式为:
for(;;)
{
...
}
对于这种无限循环可以通过break语句跳出循环。例如:
for(;;)
{
if(x<20)
break;
x++;
}
foreach语句
for语句的特殊简化版本。
lecture4
声明一维数组
数组元素类型 数组名字[];
数组元素类型[] 数组名字;
声明一维数组:
int arr[]; //声明int型数组,数组中的每个元素都是int型数值
String str[]; //声明String型数组,数组中的每个元素都是String型元素
数组分配内存空间的语法格式:
数组名字=new 数组元素类型[数组元素的个数];
数组名字:被连接到数组变量的名称。
数组元素个数:指定数组中变量的个数。即数组的长度。
为数组分配内存:
arr=new int[5];
使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0。
这种创建数组的方法是将数组的声明和内存分配合在一起执行。
数组元素类型 数组名=new数组元素类型[数组元素个数];
例:int month[]=new int[12]
初始化一维数组
第一种:
int[] a=new int[]{1,2,3,4,5};
第二种:
int[] a={1,2,3,4,5};
二维数组的创建
数组元素类型 数组名字[][];
数组元素类型[][] 数组名字;
二维数组初始化
type arrayname[][]={value1,value2...value3};
type:数组数据类型。
arrayname:数组名称,一个合法的标识符。
value:数组中各元素的值。
初始化二维数组,例:
int myarr[][]={{12,0},{45,10}};
fill(int[]a,int fromIndex,int toIndex,int value)
该方法将指定的int值分配给int型数组指定范围中的每个元素。填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括)。如果fromIndex=toIndex,则填充范围为空。
a:要进行填充的数组
fromIndex:要使用指定值填充的第一个元素的索引。(包括)
toIndex:要使用指定值填充的最后一个元素的索引。(不包括)
value:要存储在数组中所有元素中的值。
如果指定的索引位置大于或者等于要进行填充的数组的长度,则会报出ArrayIndexOutOf-BoundExcepition(数组越界异常))异常。
Array.sort(object) //进行排序的数组名称
(1)copyOf()方法 //提供了多种重载形式,用于满足不同类型数组的复制。
copyOf(arr,int newlength)
arr:要进行复制的数组。
newlength:int型常量。指复制后的新数组的长度。如果新数组的长度大于数组arr的长度,则用0填充(根据复制数组的类型来决定填充的值,整型数组用0填充,char型数组则使用null来填充);如果复制后的数组长度小于数组arr的长度,则会从数组arr的第一个元素开始截取至满足新数组长度为止。
(2)copeOfRange()方法 //提供了多样重载形式。
copeOfRange(arr,int formIndex,int toIndex)
arr:要进行复制的数组。
fromIndex:指定开始复制数组的索引位置。fromIndex必须在0至整个数组的长度之间。新数组包括索引是fromIndex的元素。
toIndex:要复制范围的最后索引位置。可大于数组arr的长度。新数组不包括索引是toIndex的元素。
数组查询
Arrays类的binarySearch()方法。可使用二分搜索法来搜索指定数组,以获得指定对象。该方法返回要搜索元素的索引。binarySearch()方法提供了多种重载方法,用于满足各种类型的查找需要。
binarySearch()方法有两种参数类型。
(1)binarySearch(Object[].Object[] key)
binarySearch(Object[] a.Object key)
a:要搜索的数组。
key:要搜索的值。
如果key包含在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是搜索键将要插入数组的那一点,即第一个大于此键的元素索引。