一.简介
1.java可划分为三个技术平台:
(Java Platform Standard Edition)标准版,是核心部分。
企业版,是技术平台。
小型版,小型电子设备软件程序的开发。
2.
(1) .JDK(Java Development Kit)是JAVA的核心,包括编译器,运行工具,文档生成工具,打包工具等。‚JDK安装目录下的子目录:
bin目录:存放可执行工具,如javac .exe(编译器)、java .exe(运行工具)、jar.exe(打包工具)、javadoc.exe(文档生成工具)等。
db目录:是一个小型的数据库,学习JDBC时不需要额外安装一个数据库软件,直接使用JavaDB即可。
jre目录:java运行时环境的根目录,但不包含开发环境中的开发工具。
Include目录:存放头文件。
lib目录:java类库或库文件,是开发工具使用的归档包文件。
src.zip文件:src中存放JDK核心类的源代码,即javac.exe{编译器工具,java源文件的扩展名为.java,编译后生成的java字节码文件的扩展名为.class}和java.exe{运行工具,会启动一个Java虚拟机(JVM)进程,专门负责运行由java编译器生成的字节码文件(.class文件)}
(2) . JRE 是java运行环境,提供给普通用户使用的,只包含运行工具,不包含编译工具。
输出:b=3 x=3 .
二.基础语法
1.标识符
标识符不能以数字开头,不能是java中的关键字。
原则:
(1).包名所有字母一律小写。
(2).类名和接口名每个单词的首字母都要大写。
(3).常量名所有字母都大写,单词之间用下划线连接。
(4).变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写,如lineNumber。
2.变量的数据类型
(1)基本数据类型:
数值型:整数类型(byte,short,int,long);浮点类型(float,double)
字符型 (char)
布尔型 (boolean a=false或true)
(2)引用数据类型
类(class),接口(interface),数组,枚举(enum),注解(annotation)
注意:
(1)在long类型的变量赋值时,若赋值超过int型的范围,则必须加上L或l。 例如:long num=2200000000L;
(2)在java中一个小数会被默认为double类型的值,在为float类型的变量赋值时后面一定加上字母F或f。
(3)强制类型转换:目标类型变量=(目标类型)值,但仍可能导致前面高位字节的数据丢失。
3.逻辑运算符
与:&(与),&&(短路与)。 即两边都为true时,结果才为true。
在使用&时,不论左边为true或者false,右边都会进行运算;如果是&&,当左边是false时,右边不会进行运算。
或:|(或),||(短路或)。
4.方法
(1)什么是方法
eg1.输出矩形:
运行结果:
*****
*****
*****
****
****
**********
**********
**********
**********
**********
**********
修饰符 返回值类型方法名([参数类型 参数名1,参数类型 参数名2,......]){
执行语句...
return返回值;
}
eg2.输出面积
输出结果:The area is 15
(2)方法的重载
Java允许在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。
(3)方法的递归
方法的递归就是在一个方法的内部调用自身的过程,递归必须要有结束条件,否则就会陷入无限递归的状态。
输出结果:sum = 10
5.字符串
(1) 创建字符串
在java中把字符串作为对象来管理,因此像创建其他类对象一样来创建字符串对象,创建对象要用类的构造方法,String 类的常见构造方法如下:
1) String (char a[]) 用一个字符数组a创建String对象 String (char[] value )
char a[]={‘g’,'o','o','d'}; String s=new String(a);
等价于 String s=new String("good");
2) String (char a[] , int offset , int length) 提取字符数组a中的一部分创建一个字符串对象。
char a[] = {'s','t','u','d','e','n','t'}; String s=new String(a,2,4);
等价于 String s=new String ("uden");
(2)获取字符串长度
String str = "hhhhhhh";
int size = str.length();
(3) 字符串查找
String 类提供了两种查找字符串的方法:
indexOf() 方法返回的是搜索的字符或字符串首次出现的位置,lastIndexOf() 方法返回的是搜索的字符或字符串最后一次出现的位置。 如果没有检测到,则返回-1。
注意:如果str.lastIndexOf("")(没有空格) 返回结果与 str.length() 相同。
(4)获取指定索引位置的字符
str.charAt(int index)
(5)获取子字符串
1)substring(int beginIndex) 返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
2)substring(int beginIndex,int endIndex)
(6)去除空格
trim() 返回字符串的副本,忽略前导空格和尾部空格。
输出结果:7 5
(7) 字符串替换
str.replace(char oldChar,char newChar);
(8)判断字符串是否以指定的内容开始或结束
startsWith(String prefix); str.endsWith(String suffix) 这两个方法的返回值都为boolean类型。
(9) 判断字符串是否相等
不能简单的使用比较运算符==
1)str.equals(String otherstr) 区分大小写
如果str和otherstr 这两个字符串具有相同的字符和长度时,返回true。
2)str.equalsIgnoreCase(String otherstr) 不区分大小写。
(10)按字典顺序比较两个字符串
str.compareTo(String otherstr) 如果按字典顺序此String对象位于参数字符串之前,则比较结果是一个负整数,..之后..是正整数,如果两个字符串相等,则结果为0.
输出结果:
b compareTo a:1
b compareTo c:-1
(10)字母大小写转换
str.toLowerCase(); 将String转换为小写。 str.toUpperCase(); 转换为大写。
(11)字符串分割
str.split(String sign); str.split(String sign,int limit); limit限定拆分的次数。
输出结果:
abc
def
ghi
jkl
abc
def
ghi,jkl
12) 格式化字符串 format()方法
1)常规类型格式化
2)对日期、时间字符串格式化
Date date=new Date();//创建Date对象date
String s=String.format("%te",date);
(13)正则表达式
正则表达式可以用来搜索、编辑或处理文本。
Java对正则表达式的处理集中在以下两个两个类:
java.util.regex.Matcher 模式类:用来表示一个编译过的正则表达式。
java.util.regex.Pattern 匹配类:用模式匹配一个字符串所表达的抽象结果。
在其他语言中,\\ 表示:在正则表达式中插入一个普通的反斜杠,没有特殊的意义。
在 Java 中,\\ 表示:要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
所以,在其他的语言中,一个反斜杠\就足以具有转义的作用,而在正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用,两个 \ 代表其他语言中的一个 \,例如表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\\\。
常见的正则表达式
规则 | 正则表达式语法 |
一个或多个汉字 | ^[\u0391-\uFFE5]+$ |
邮政编码 | ^[1-9]\d{5}$ |
QQ号码 | ^[1-9]\d{4,10}$ |
邮箱 | ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$ |
用户名(字母开头 + 数字/字母/下划线) | ^[A-Za-z][A-Za-z1-9_-]+$ |
手机号码 | ^1[3|4|5|8][0-9]\d{8}$ |
URL | ^((http|https)://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ |
18位身份证号 | ^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$ |
实例分析:
(14)字符串生成器
字符串生成器即StringBuilder类,是字符串一个重要的常用类。新创建的StringBuilder对象初始容量是16个字符,可以自行指定初始长度,也可以动态地执行添加、删除和插入等字符串的编辑操作,大大提高了频繁增加字符串的效率。
1) append(content)方法
该方法将参数content追加到字符串生成器中。
2) insert(int offset,arg)方法
向字符串生成器中的指定位置插入数据内容
3)delete(int start,int end)
6.数组
(1)定义一个数组,声明的同时为数组分配内存 int[ ] arr=new int[10];
int []arr; //声明一个int[]类型的变量
arr=new int[100];//创建一个长度为100的数组
定义二维数组:
int[][]arr=new int[3][4];
int[][]arr=new int[3][];
int[][]arr={{1,2},{3,4,5,6},{7,8,9}};
(2)每个数组的索引范围是0~length-1
(3)数组的遍历:若是循环,System.out.println(arr[i]);
eg.如何定义数组以及访问数组中的元素?
输出结果:
arr[0]= 1
arr[1]= 0
arr[2]= 0
数组的长度是:3
(4)在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式称为动态初始化,静态初始化即在定义数组的同时就为数组中的每个元素赋值。
// 类型[]数组名=new类型[]{元素,元素,元素....};
// 类型[]数组名={元素,元素....};
(5)求数组的最值
(6)填充替换数组元素
fill (int []arr,int value);
fill(int []arr,int formIndex,int toIndex,int value);
(7).对数组进行排序
Arrays.sort(object) //object 指数组名称
(8)数组的复制
copyOf(arr,int newlength); 复制数组至指定长度.
copyOfRange(arr,int formIndex,int toIndex) 将制定数组的指定长度复制到一个新数组中.
(9)数组查询
binarySearch()方法提供了多种重载形式,用于满足各种类型数组的查找需要,binarySearch()有两种参数类型 二分搜索法来搜索指定数组,以获得指定对象
注意:调用前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外如果数组中含有多个带有指定值的元素,则无法保证找到的是哪一个。
binarySearch(Object[],Object key); binarySearch(Object[].arr,int fromIndex,toIndex,Object key);如果指定的范围>=数组的长度,则会报异常。
如果key在数组中,则返回搜索值的索引;否则返回-1或者"-"(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素索引。存在时从0开始计数,不存在时从0开始计数.
(10)冒泡排序
输出结果:
冒泡前:9 8 3 5 2
第1轮排序后:8 3 5 2 9
第2轮排序后:3 5 2 8 9
第3轮排序后:3 2 5 8 9
第4轮排序后:2 3 5 8 9
冒泡后:2 3 5 8 9