资源描述
第1章 Java概述
1.2 Java的特点 : 简单、面向对象、与平台无关、多线程、安全、动态
1.3 安装Sun公司的SDK:三种平台:Java SE(J2SE)、Java EE(J2EE)、Java Me(J2ME) 。path classpath设置
1.4 一个Java程序的开发过程:编写源文件(文件名.java)→编译Java源程序:使用Java编译器(javac.exe)编译源文件,得到字节码文件→运行Java程序:使用Java SE平台中的Java解释器(java.exe)来解释执行字节码文件。
1.5 一个简单的Java应用程序的开发过程: 源文件命名:源文件中有多个类,那么只能有一个类是public类。如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java。如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了
第2章 标识符、关键字和数据类型
n 2.1 标识符和关键字 : 标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符。
2.2 Java的8种基本数据类型: boolean、byte 、short、int、long、float、double、char
2.3 Java的数组 : 引用类型 int a[]={100,200,300};
int a[]=new int [10] 对象数组
第3章 运算符、表达式和语句
3.2 语句概述:6类:1.方法调用2.表达式语句3.复合语句4.空语句5.控制语句6.package语句和import语句。
3.3 控制语句
Switch(整形表达式)
{ case 整形常量1: break;
Default :
}
3.4 循环语句
3.5 break和continue语句
第4章 类、对象和接口
4.1 编程语言的几个发展阶段
4.1.1 机器语言 4.1.2 过程语言
4.1.3 面向对象编程=对象+类+继承+消息传递: 特点:封装、继承、多态
4.2 类:命名规则: 包、类、变量、方法等命名:要体现各自的含义。
包名:全部小写,io,awt。
类名、接口名:每个单词的首字母大写,HelloWorldApp。
方法名、变量名:第一个单词小写,后面每个单词的首字母大写,setName。
常量名:全部大写,MAX。
4.2.1 类的实现=类声明+类体(变量的声明+方法的定义(方法声明+方法体))
4.2.2 类声明的变量称作对象。创建对象包括对象的声明和为对象分配内存的两个步骤。
4.2.3 成员变量和局部变量 局部变量隐藏成员变量
4.2.4 方法: 消息:oba.method(parameter)
4.2.5 方法重载 方法的参数必须不同
4.2.6 构造方法 : 必须与它所在的类的名字完全相同,而且没有返回类型,new 调用
4.2.8 值得注意的问题 :类方法只能直接访问类成员,实例方法都可访问
4.3 对象 : 属性和方法的集合
4.3.1 创建对象 People zhangPing=new People(参数);
4.3.2 使用对象 对象.成员 或对象.方法名(参数)
4.3.3 对象的引用和实体 应理解堆区与栈区的区别
4.3.4 参数传值 值类型 方法不能更改实参变量或它的任何成员。
引用类型 : 方法不能更改实参变量,但可以更改它引用的对象的成员。
n 4.4 static 关键字
4.4.1 实例变量和类变量的区别 共享一个类变量,
实例变量:每个对象都有自己的实例变量
4.4.2 实例方法和类方法的区别:类方法只能直接访问类成员,实例方法都可访问
4.5 this关键字
可以出现在实例方法和构造方法中,但不可以出现在类方法中
4.6 包 : 包是类与接口的集合, Java 提供包来管理类名空间可以解决类名冲突
4.6.1 包语句 package abc.def;
4.6.2 import语句 : import package1[.package2…].(classname|*);
4.6.3 将类打包 javac Tx.java -d .
4.7 访问权限
4.7.1 私有变量和私有方法
4.7.2 共有变量和共有方法
4.7.3 友好变量和友好方法
4.7.4 受保护的成员变量和方法
4.7.5 public类与友好类 : public class 或 class
4.8 类的继承 class SubClass extends SuperClass {……}
4.8.1 子类
4.8.2 子类的继承性:子类继承了父类中除了构造方法外的所有成员, 不能访问父类的private成员变量
4.8.3 成员变量的隐藏和方法的重写
子类派生过程主要体现在三个方面 :
p 继承超类的成员变量和成员方法;
p 增加新的成员变量和成员方法;
p 覆盖(修改、重写)超类的成员方法,或重载超类的成员变量
方法覆盖中,子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明。
4.8.4 final关键字: final类不能被继承 常量 方法不能被重写
4.9 对象的上转型对象 上转型对象可以操作子类继承或隐藏成员变量,也可以使用子类继承的或重写的方法
4.10 多态性 : 上转型对象调用子类重写的方法
多态性的意义:1、异类集合 2、多态参数
4.11 abstract 类和abstract方法 :
不能用new运算创建对象 可用于定义对象引用
4.12 super关键字 : 子类中调用超类的构造函数 使用被子类隐藏了的父类的成员变量或方法
4.13 接口 : 定义行为协议
4.13.1 接口的声明与使用
Interface 接口名 entends 父接口
{常量:public static final 方法:public static 可省略}
class A implements Printable,Addable
4.13.2 理解接口 :面向接口编程
4.13.3 接口回调 :接口类型的对象调用接口中的方法
4.13.4 接口做参数 :且有多态性
4.14 内部类 : Java将内部类作为外嵌类的一个成员,就如同其成员变量与成员方法一样
4.15 匿名类
4.15.1 和类有关的匿名类
4.15.2 和接口有关的匿名类
4.16 异常类
1、程序不能处理的错误——Error
程序应能避免的异常——RuntimeException
必须捕获的异常——Exception
自定义异常
4.16.1 try-catch语句
try
{
可能产生异常的代码;
}
catch (exceptiontype1 e)
{异常 e的处理语句}
catch (exceptiontype2 e)
{ 异常 e的处理语句}
……
finally
{
最终的处理
}
使用throws语句
throws 子句一般用来表明在使用该方法时可能抛出异常但不捕获的异常。异常由系统来处理
4.16.2 自定义异常类
l throw new MyException()
4.17 Class类 :反射
4.17.1 获取类的有关信息
4.17.2 使用Class实例化一个对象
Class c= Class.forName();c.newInstance()
4.18 基本类型的类包装 :用于集合,用于类型转换
4.18.1 Double类和Float类
4.18.2 Byte、Integer、Short、Long类
4.18.3 Character类
4.19 反编译和文档生成器 javap javadoc()
4.20 JAR文件 可将jar包放到classpath中
4.20.1 将应用程序压缩为JAR文件 java –jar Myjar.jar
4.20.2 将类压缩成JAR文件 jar cfm tom.jar mymoon.mf A.class b.class
4.20.3 更新、查看JAR文件
1.开发与运行Java程序需要经过哪些主要步骤和过程?
答:(1)编写Java源文件:使用文本编辑器(Edit或记事本),拓展名为.java
(2)编译Java源文件:使用Java编译器(javac.exe)。得到字节码文件*.class
(3)运行Java程序:Java应用程序使用Java解释器(java.exe)执行字节码文件;
2.Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎样的?
答:①Java程序由类组成。
②应用程序可以没有public类;小应用程序一定有一个类是public类(主类)。
③应用程序:如果只有一个类,源文件名与该类的类名相同,拓展名为.java;
有多个类时,如果有public类(最多一个),源文件名与public类的类名相同,拓展名是.java;没有public类,源文件名与任何一个类的类名相同即可,扩展名为.java
小应用程序:源文件名与主类的类名相同,拓展名是.java。
3.什么叫标识符?标识符的规则是什么?
答:①用来标识类名、变量名、、方法名、类型名、数组名、文件名的有效字符序列。
②由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符,而且关键字不能作为标识符。
1.类中的实例变量在什么时候会被分配内存空间?
答:在使用类创建实例对象时会被分配空间。
2.什么叫方法的重载?构造方法可以重载吗?
答:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
构造方法可以重载。
3.类中的实例方法可以操作类变量(static变量)吗?类方法(static方法)可以操作实例变量吗?
答:可以,类变量是属于整个类,也属于所有该类创建的对象,它在类定义时已经被分配空间,故使用实例方法去操作类变量不会出现非法操作问题。
不可以,因为实例变量在创建对象的时候才被分配空间,对象在使用完后即可能被销毁,而类方法的生命周期为类定义到程序退出,且可以直接通过类名调用。当调用类方法去操作一个并求被分配空间的对象的实例变量时,这明显是不符合逻辑的,故类方法只能操作类变量或类方法。
4.类中的实例方法可以用类名直接调用吗?
答:不可以,实例方法是属于某个具体的类的对象,而不是属于类,它操作的对象的实例变量只在对象被创建时分配空间并初始化,实例变量都未被分配空间时,实例方法是不能去操作它的。
5.简述类变量和实例变量的区别?
答:①不同对象的实例变量将分配不同的内存空间,实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;而类变量,则所有对象的这个类变量分配相同的一处内存,类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;
②类变量在类被加载到内存时就分配内存空间;而实例变量在使用New()创建对象时才分配内存空间
③类变量可以通过对象和类名访问,而实例变量只可以通过对象访问
6.子类将继承父类的哪些成员变量和方法?子类在什么情况下隐藏父类的成员变量和方法?在子类中是否允许有一个方法和父类的方法名字相同,而类型不同?
答:子类和父类在同一个包时,子类将继承父类中不是private的成员变量及成员方法作为自己的成员变量及成员方法,继承的成员的访问权限保持不变。子类和父类不在同一个包时,子类将继承父类的protected、public成员作为自己的成员变量及成员方法作为自己的成员变量及成员方法,子类中它们的访问权限保持不变,子类没有继承父类的友好变量及友好方法。
对于子类可以从父类继承的成员变量,只要子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量。对于已继承的方法,子类可以通过方法重写来隐藏继承的方法。
允许,其实这就是方法重载,而方法重写则是子类中定义的方法,其名字、返回类型、参数个数和类型与从父类继承的方法完全相同,方法重载不会隐藏同名方法。
8.父类的final方法可以被子类重写吗?
答:不可以,final方法相当于final变量一样,相当于常量,其值不可被改变,只不过用final修饰的方法是常成员方法,其方法体不可被改写与其是一样的道理。
9.什么类中可以有abstract方法?
答:abstract类中可以有abstract方法。
10. 什么叫对象的上转型对象?
答:
假设B类是A类的子类或间接子类,当用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,如:
A a;
a = new B();
或
A a;
B b = new B();
a = b;
那么,称这个A类对象a是子类对象b的上转型对象。
11.什么叫接口的回调?
答:如果把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口中的方法,实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用对象中已实现的接口的方法,这种技术就叫做接口回调。
编程:
1.编写应用程序,求1!+2!+…+10!。
public class Xiti4
{ public static void main(String args[])
{ double sum=0,a=1;
int i=1;
while(i<=20)
{ sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}
2.编写一个应用程序,求100以内的全部素数。
class Xiti5
{ public static void main(String args[])
{ int i,j;
for(j=2;j<=100;j++)
{ for(i=2;i<=j/2;i++)
{ if(j%i==0)
break;
}
if(i>j/2)
{ System.out.print(" "+j);
}
}
}
}
5.分别用do―while和for循环计算1+1/2!+1/3!+1/4!+…的前20项和。
答:①for循环
classSum
{
publicstaticvoidmain(String args[])
{
intfact;
doublesum=0;
for(inti=1;i<=20;i++)
{
fact=1;
for(intj=1;j<=i;j++)
fact*=j;
sum+=1.0/fact;
}
System.out.println(sum);
}
}
②do―while循环
classSum
{
publicstaticvoidmain(String args[])
{
inti=1;
intfact;
doublesum=0;
do
{ fact=1;
intj=0;
while(++j<=i)
fact*=j;
sum+=1.0/fact;
}
while(++i<=20);
System.out.println(sum);
}
}
6.一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序,求1000之内的所有完数。
public class Xiti7
{ public static void main(String args[])
{ int sum=0,i,j;
for(i=1;i<=1000;i++)
{ for(j=1,sum=0;j<i;j++)
{ if(i%j==0)
sum=sum+j;
}
if(sum==i)
System.out.println("完数:"+i);
}
}
}
7.编写应用程序,分别使用while和for循环计算8+88+888+…前10项之和。
答:①for循环
classTheSum
{
publicstaticvoidmain(String args[])
{
longsum=0,data=8;
for(inti=1;i<=10;i++)
{
sum=sum+data;
data=data*10+8;
}
System.out.println(sum);
} }
②while循环
classTheSum
{
publicstaticvoidmain(Stringargs[])
{
longsum=0,data=8,i=0;
while(++i<=10)
{
sum=sum+data;
data=data*10+8;
}
System.out.println(sum);
}
}
8.编写应用程序,输出满足1+2+3+…+n<8888的最大正整数n。
classMaxn
{
publicstaticvoidmain(String args[])
{
intk=1,sum=0;
while((sum+=k)<8888)
k++;
k--;
System.out.println("最大能取到:"+k);
}
}
1.编写一个应用程序,给出汉字“你”“我”“他”在unicode表中的位置:
答:public class Xiti4{
public static void main (String args[ ]){
char ch1='你',ch2='我',ch3='他';
System.out.println("\""+ch1+"\"的位置:"+(int)ch1);
System.out.println("\""+ch2+"\"的位置:"+(int)ch2);
System.out.println("\""+ch3+"\"的位置:"+(int)ch3);
}
}
★2.计算两个非零正整数的最大公约数和最小公倍数,要求两个非零正整数从键盘输入。
import java.util.Scanner;
public class Xiti8
{ public static void main (String args[ ]){
System.out.println("请输入两个非零正整数,每输入一个数回车确认");
Scanner reader=new Scanner(System.in);
int m=0,n=0,temp=0,gy=0,gb=0,a,b;
a=m = reader.nextInt();
b=n = reader.nextInt();
if(m<n)
{ temp=m;
m=n;
n=temp;
}
int r=m%n;
while(r!=0)
{ n=m;
m=r;
r=m%n;
}
gy=n;
gb=a*b/gy;
System.out.println("最大公约数 :"+gy);
System.out.println("最小公倍数 :"+gb);
}
}
3. 求满足1+2!+3!+...+n!≤9999的最大整数n
public class Xiti9
{ public static void main(String args[])
{ int n=1;
long sum=0,t=1;
t=n*t;
while(true)
{ sum=sum+t;
if(sum>9999)
break;
n++;
t=n*t;
}
System.out.println("满足条件的最大整数:"+(n-1));
}
}// 1至7的阶乘和是sum=5913.0 // 1至8的阶乘和是sum=46233.0
展开阅读全文