第一章 初识java
1.1 Java简介
java是一种可以编写跨平台的、面向对象的程序设计语言。
JAVA语言编写的程序即是编译型的,又是解释型的。程序代码经过编译之后转换为一种称为java字节码的中间语言,java虚拟机(JVM)将对字节码进行解释和运行。编译只进行一次,而解释在每次运行程序时都会进行。
Java版本:
1.java SE 为java标准版,主要用于桌面应用程序的开发。
2.java EE 为企业版,用于开发企业级分布式的网络程序。
3.java ME 主要应用于嵌入式开发。
java API(应用程序编程接口)
JDK(java开发者工具箱)
JRE(JAVA运行环境)
JRE主要负责java程序的运行,JDK包含了Java程序开发所需要的编译、调试等工具,另外含JDK的源代码第二章 Eclipse开发工具
2.1熟悉Eclipse
IDE(集成开发工具)
编辑器显示行号
在Java编辑器左侧单击鼠标右键,在弹出的快捷菜单中选择“显示行号”。编写Java代码
Ctrl+Alt+/ 快捷键自动补全Java关键字,也可以使用Alt+/ 快捷键启动Eclipse代码辅助菜单。 System.out.println()方法可以通过输入“syso”和按Alt+/快捷键完成快速输入。eclipse光标变成黑块解决方法:
是由于编程时一不小心按到了Insert键,重新按一下Insert键就可以(在Delete键的上方)。第三章 Java语言基础
3.1 Java主体结构
Java程序的基本组成单元就是类,类体又包括属性与方法两部分。而每一个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。 文件名必须和类名同名。 通常将类的属性称为类的全局变量(成员变量),将方法中的属性称为局部变量。 public、static和void分别是main()方法的权限修饰符、静态修饰符和返回值修饰符。3.2 基本数据类型
3.2.1整数类型
3.2.2转义字符
3.3变量与常量
标识符由任意循序的字母、下划线(_)、美元符号($)和数字组成,且第一个字符不能是数字。 生命常量,用final关键字 格式:final 数据类型 常量名称[=值] 实例:final double PI = 3.1415926D 常量名通常使用大写字母。3.3.4变量的有效范围
1.成员变量 可分为静态变量(也称类变量):static int i = 90 ;和实例变量: int y = 45 静态变量的有效范围可以跨类,甚至可以达到整个应用程序之内。在其他类中可用“类名.静态变量”的方式使用。 2.局部变量 只在当前代码块中有效。局部变量和成员变量名字相同时,隐藏成员变量,即成员变量在此方法中暂时失效。3.4 运算符
3.5 数据类型转换
3.5.1隐形类型转换
从低级类型到高级类型的转换,系统自动执行。顺序:byte<short<int<long<float<double3.5.2显性类型转换
从高级类型到低级类型的转换(强制类型转换) 语法如下: (类型名)要转换的值 int a = (int)45.3;long b=(long)456.6F3.6 代码注释与编码规范
单行注释“//” 多行注释“/* */” 文档注释“/** */”会被javadoc文档工具读取为javadoc文档内容 程序中注释要占代码总量的20%-50% Java语言的基本类型中并没有String类型第四章 流程控制
4.1 复合语句
以整个块区为单位的语句,又称块语句。以“{”开始,以“}”结束
4.2 条件语句
4.2.1 if条件语句
if(布尔表达式){ 语句序列 }4.2.2 switch多分支语句
switch(表达式) { case 常量1: 语句块1 [break;] ``` case 常量n:语句块n[break;]default: 语句块n+1; [break;] }switch表达式中的值必须是整形或字符型,常量1~n必须也是整形或字符型。
4.3 循环语句
4.3.1 while循环语句
while(条件表达式) { 执行语句 }4.3.2 do...while循环语句
do { 执行语句 } while(条件表达式);比while语句多一次循环
4.3.3 for循环语句
1.for语句
for(表达式1;表达式2;表达式3) { 语句序列 }2.foreach语句(用于遍历数组等)
for(元素变量x:遍历对象 obj){ 引用了x的Java语句; }第五章 字符串
5.1 String类
声明字符串: String str = [null] 例:String s; 创建字符串: String(char a[]) 例:String s = new String(a);5.2 连接字符串
使用运算符“+”可完成多个字符串连接功能 只要“+”运算符的一个操作数是字符串,编译器就会将另一个数自动调用toString()方法转换成字符串形式。 int booktime = 4; System.out.println(“我每天话费” + booktime + "小时看书" + practice);5.3 获取字符串信息
5.3.1 获取字符串长度
str.length();5.3.2 字符串查找
indexOf(String s)用于返回参数字符串s在指定字符串中首次出现的索引位置 语法: str.indexOf(substr) lastIndexOf(String str)用于返回指定字符串最后一次出现的索引位置 语法: str.lastIndexOf(substr)5.3.3 获取指定索引位置的字符
str.chatAt(int index)5.4 字符串操作
5.4.1 获取子字符串
substring()方法可对字符串进行截取 1. substring(int beginIndex) 从指定的索引位置开始截取直到该字符串结尾的子串 语法: str.substring(int beginIndex) 2. substring(int beginIndex,int endIndex)从字符串某一索引开始截取至某一索引位置结束的子串 语法: str.substring(int beginIndex,int endIndex)5.4.2 去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格
语法: str.trim()
5.4.3 字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串
方法: str.replace(char oldChar,char newChar)
5.4.4 判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束 语法: str.startsWith(String prefix) str.indsWith(String suffix)5.4.5 判断字符串是否相等
equals()方法区分大小写 语法: str.equals(String otherstr) equalsIgnoreCase()方法 不区分大小写 语法: str.equalsIgnoreCase(String otherstr)5.4.6 按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串 语法: str.compareTo(String otherstr)5.4.7 字母大小写转换
toLowerCase()方法可将字符串中的所有字符从大写字母改为小写字母 语法: str.toLowerCase() toUpperCase() 方法可将字符串中的所有字符从小写字母改为大写字母 语法: str.toUpperCase()5.4.8 字符串分割
split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中1. split(String sign)根据给定的分隔符对字符串进行拆分
语法: str.split(String sign)
没有统一的对字符进行分割的字符。如想定义多个分隔符,可使用“|”,如“,|=”
2. split(String sign,int limit) 根据给定的分隔符对字符串进行拆分,并限定拆分的次数
5.5 格式化字符串
format()方法用于创建格式化的字符串5.6 正则表达式
通常被用作判断语句中,用于检查某一字符串是否满足某一格式5.7 字符串生成器
StringBuider,提高频繁增加字符串的效率 StringBuilder builder = new StringBuilder()第六章 数组
6.1 数组概述
数组是相同类型的、用一个标识符封装到一起的基本数据类型序列或对象序列。6.2 一维数组
1.声明:数组元素类型 数组名字[ ]; 数组元素类型[ ] 数组名字;例:int arr[];
2.声明数组只是给出了一个数组名字和元素的数据类型,
想真正使用数组,还得为它分配内存空间:数组名字 = new 数组元素类型[数组元素的个数];
例:arr= new int[5];
3.声明的同时并分配内存: 数组元素类型 数组名 = new 数组元素类型[数组元素的个数];
例:int month[] = new int[12];
6.3 二维数组
1.声明:数组元素类型 数组名字[][]; 数组元素类型[][] 数组名字;例:int arr[][];
6.4 数组的基本操作
6.4.1 遍历数组
使用for循环实现。遍历二维数组需使用双层for循环,通过数组length属性可获取数组长度。
int arr = new int[]{1.2.4.5.6.3.7};
for (int k = 0; k < arr.length; k++)
{
System.out.println(arr[k]);
}
6.4.2 填充替换数组元素
通过Arrays类的静态方法fill()来对数组中的元素进行替换。1.fill(int[] a,int value)//a:要进行元素替换的数组;value:要存储数组中所有元素的值2.fill(int[] a,int fromIndex,int toIndex,int value)fromIndex:要使用指定值填充的第一个元素的索引(包括)
toIndex:要使用指定值填充的最后一个元素的索引(不包括)
6.4.3 数组排序
通过Arrays类的静态方法sort()Arrays.sort(object)//object:要排序的数组名
根据字典编排顺序排序,所以数字在字母前面,大写字母在小写字母前面
6.4.4 复制数组
Arrays类的copyOf()与copyOfRange()方法可实现对数组的复制。
1.copyOf()复制数组至指定长度
copyOf(arr,int newlength)例:int newarr[] = Arrays.copyOf(arr,5)
2.copyOfRange()将指定数组的指定长度复制到一个新数组
copyOfRange(arr,int formIdex,int toIndex)例:int newarr[] = Arrays.copyOfRange(arr,0,3)
6.4.5 数组查询
Arrays类的binarySearch()方法,可用二分搜索法来搜索指定数组。
1.binarySearch(Object[] a.Object key)//a:要搜索的数组;key:要搜索的值
若果key包含在数组中,则返回搜索值得索引;否则返回-1或_插入点。
2..binarySearch(Object[].a,int formIdex,int toIndex,Object key)
指定范围内索引某一元素。
6.5 数组排序算法
6.5.1 冒泡排序
对比相邻元素值,满足条件就交换元素值,将较小的元素移动的数组前面6.5.2 直接选择排序
将指定排序位置与其他数组元素分别对比,满足条件就交换元素值。6.5.3 反转排序
将数组最后一个元素与第一个元素替换,依次类推,直到所有元素反转替换第七章 类和对象
实质上可以将类看做是封装对象属性和行为的载体,它定义了对象所具有的功能。而对象是类抽象出来的一个实例。7.1 面向对象概述
7.1.1 对象
对象是事物存在的实体,如人、书桌等。 对象可划分为两部分:静态部分(属性);动态部分(行为)7.1.2 类
类是同一类事物的统称。具有相同属性和行为的一类实体称为类。 在Java语言中,类中对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的。7.1.3 封装
面向对象程序设计的特点:
封装性 继承性 多态性 封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类, 类通常对客户隐藏其实现细节,这就是封装思想。提高程序的可维护性。7.1.4 继承
类与类之间的一种关系:继承 主要利用特定对象之间的共有属性7.1.5 多态
将父类对象应用于子类的特征就是多态。 多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类。该风格由父类实现。 父类通常定义为抽象类,在抽象类中给一个方法的标准,而不给出实现的具体流程。 在多态*中,比抽象类更为方便的方式是将抽象类定义为接口。,由抽象方法组成的集合就是接口。7.2 类
7.2.1 成员变量
对象的属性7.2.2 成员方法
1.对象的行为 2.语法格式: 权限修饰符 返回值类型 方法名(参数类型 参数名){ ```//方法体 return 返回值; } 使用return后,方法执行将被终止 3.类成员变量和成员方法统称为类成员。7.2.3 权限修饰符
控制着对类和类的成员变量以及成员方法的访问。7.2.4 局部变量及其有效范围
从该变量的声明开始到该变量的结束为止 在乎不嵌套的作用域中可以同时声明两个名称和类型相同的局部变量。7.2.5 this关键字
代表本类对象的引用,用于引用对象的成员变量和方法。 还可以作为方法的返回值7.3 类的构造方法
构造方法是一个与类同名的方法。对象的创建就是通过构造方法完成的。每实例化一个对象时,类就会自动调用构造方法。 1.特点: 构造方法没有返回值 构造方法的名称要与本类的名称相同。 2.语法格式: public book(){ //```构造方法体 } 3.构造方法中可以为成员变量赋值。 4.在无参构造方法中可以用this关键字调用有参的构造方法。且只可以在第一句使用this调用。7.4 静态变量、常量和方法
1.被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
2.使用“类名.静态成员”的形式调用
3.规定:
在静态方法中不可以使用this关键字
在静态方法中不可以直接调用非静态方法
不能在方法体内的局部变量声明为static
7.5 类的主方法
主方法是类的入口,它定义程序从何处开始:主方法提供对程序流向的控制 特性: 1.主方法也是静态,所以如要在主方法中调用其他方法,这该方法必须也是静态的 2.主方法没有返回值 3.主方法的形参为数组7.6 对 象
1.通过new操作符创建对象。 语法: Test test = new Test(); Test test = new Test("a");//"a"参数 每个对象都是相互独立的 2.使用“对象.类成员”来获取对象的属性和行为 3.对象的引用: 类名 对象引用名称 例:Book book; 引用只是存放一个对象的内存地址,并非存放一个对象。 4.对象的比较: “==”比较两个对象的引用地址是否相等 equals()方法用于比较两个对象引用所指的内容是否相等。 5.对象的销毁 自动回收的情况:对象引用超过其作用范围;见对象赋值为null第八章 包装类
Java中不能定义基本类型对象,为了能将基本类型视为对象来处理,并能连接相关的方法,Java为每个基本类型提供了包装类。8.1 Integer
java.lang包中的Integer类、Long类和Short类,分别将基本类型int、long和short封装成一个类,且都是Number的子类,其包含的方法基本相同。1.构造方法
1. Integer(int number)
例:Integer number = new Integer(7);
2.Integer(String str)
例:Integer number = new Integer(“85”);
8.2 Boolean
Boolean类将基本类型为Boolean的值包装在一个对象中。
构造方法
1.Boolean(boolean value)2.Boolean(String str)
8.3 Byte
构造方法
1.Byte(byte value) 2.Byte(String str)8.4 Character
构造方法
Chatacter(char value) 例:Character c1 = new Character('a');8.5 Double
构造方法
Double(double value) Double(String str)8.6 Number
抽象类Number是BigDecimal,BigInteger,Byte,Double,Float,Integer,Long和Short类的父类。第九章 数字处理类
9.1 数字格式化(DecimalFormat类)
DecimalFormat类用于格式化十进制数字,在格式化数字时,使用一些特殊字符构成一个格式化模板。