<p>第1章 Java开发入门一、1.对象2.面向对象、跨平台性3.javac4.Java虚拟机(或JVM)5.JRE二、1.错2.错3.错4.对5.对三、1.C2.ABCD3.D4.ABCD5.D四、1.简答性、面向对象、安全性、跨平台性、支持多线程、分布性。2.Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译,生成后缀名为.class的字节码文件,然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。五、HelloWorld.java1 publicclassHelloWorld{2 publicstaticvoidmain(String[]args){3 System.out.println("这是第一个Java程序!");4 }5 }第2章 Java编程基础一、1.class2.单行注释、多行注释、文档注释3.44.==5.容器、0二、1.对2.错3.对4.错5.对三、1.AC2.A3.BD4.C5.C四、1.Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4个字节。long长整型,占8个字节。float单精度浮点型,占4个字节。double双精度浮点型,占8个字节。char字符型,占两个字节。boolean型,表示逻辑值,有true和false两个值,分别占一个字节。2.在switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作用是跳出循环语句,执行循环后面的代码;continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。五、1.publicclassgetSum{ publicstaticvoidmain(String[]args){ intsum=0; for(inti=1;i<100;i++){ if(i%2!=0) sum+=i; } System.out.println(sum); }}2.publicclassTest{</p>
publicstaticvoidmain(String[]args){
inti=1;
longsum=1;
do{
sum*=i;
i++;
}while(i<=5);
System.out.println(sum);
}}第3章 面向对象(上)一、1.封装、继承、多态2.private、default、protected、public3.static4.private5.参数类型参数个数6.this二、1.对2.对3.错4.对5.对三、1.C2.B3.D4.B5.C四、1.面向对象的特点主要可以概括为封装性、继承性和多态性。其中封装是面向对象核心思想”,“将对象的属性和行为封装起来”,“不需要让外界知道具体实现细节”,“这就是封装思想。继承性主要描述的是类与类之间的关系”,“通过继承”,“可以在无需重新编写原有类的情况下”,“对原有类的功能进行扩展。多态性指的是在程序中允许出现重名现象”,“它指在一个类中定义的属性和方法被其它类继承后”,“它们可以具有不同的数据类型或表现出不同的行为”,“这使得同一个属性和方法在不同的类中具有不同的语义。2.(1)构造方法名与类名相同(2)在构造方法名的前面没有返回值类型的声明(3)在构造方法中不能使用return语句返回一个值五、Example.javaclassResume{privateStringname;privateStringsex;privateintage;publicResume(){}publicResume(Stringname,Stringsex,intage){=name;this.sex=sex;this.age=age;}publicStringgetName(){returnname;}publicStringgetSex(){returnsex;}publicintgetAge(){returnage;}publicvoidintroduce(){System.out.println(“姓名:”+this.getName()+” 性别:”+this.getSex()+” 年龄:”+this.getAge());}}publicclassExample{publicstaticvoidmain(String[]args){Resumere=newResume(“李四”,“男”,20);roduce();}}第4章 面向对象(下)一、1.继承2.重写3.final4.implements5.抽象类6.super二、1.错2.对3.对4.对5.对6.错7.对三、1.B2.D3.C4.D5.C四、1.概念:在Java中”,“类的继承是指在一个现有类的基础上去构建一个新的类”,“构建出来的新类被称作子类”,“现有类被称作父类”,“子类会自动拥有父类所有可继承的属性和方法。好处:继承性主要描述的是类与类之间的关系”,“通过继承”,“可以无需重新编写原有类的情况下”,“对原有类的功能进行使用和扩展。2.1、应用程序不必为每一个子类编写功能调用”,“只需要对抽象父类进行处理即可。大大提高程序的可复用性。2、子类的功能可以被父类的方法或引用变量所调用”,“这叫向后兼容”,“可以提高可扩充性和可维护性。3、使用多态可以解决项目中紧偶合的问题”,“提高程序的课扩展性.是OCP原则的一个具体的实现。五、Employee.javaabstractclassEmployee{ privateStringname; //定义姓名name并私有化属性 privateintmonth; //定义生日月份month并私有化属性 publicEmployee(){} //无参构造器 publicEmployee(Stringname,intmonth){//有参构造方法 =name;//给属性name初始化赋值 this.month=month;//给属性month初始化赋值 } //获取属性name的方法 publicStringgetName(){ returnname;//返回name属性 } //获取属性month的方法 publicintgetMonth(){ returnmonth;//返回month属性 } //给属性name赋初始值 publicvoidsetName(Stringname){ =name;//本类中的属性name } //给属性month赋初始值 publicvoidsetMonth(intmonth){ this.month=month;//本类中的属性month } //创建一个方法getSalary()用来计算工资,参数month是月份,如果当月是员工生日,奖 励100元 publicdoublegetSalary(intmonth){ doublesalary=0;//定义工资变量 //判断当前月份是否是员 工的生日月份,如果是奖励100元 if(this.month==month){ salary=salary+100; returnsalary;//返回工资salary } }}SalariedEmployee.javaclassSalariedEmployeeextendsEmployee{ privatedoublemonthSalary; //封装monthSalary属性 publicSalariedEmployee(){} //无参构造方法 //有参构造方法参数姓名生日月份月薪 publicSalariedEmployee(Stringname,intmonth,doublemonthSalary){ super(name,month);//调用父类有参构造方法 this.monthSalary=monthSalary;//为属性monthSalary初始化赋值 } //获取monthSalary的值 publicdoublegetMonthSalary(){ returnmonthSalary; } //给monthSalary赋值 publicvoidsetMonthSalary(doublemonthSalary){ this.monthSalary=monthSalary; } //覆盖父类中的方法 publicdoublegetSalary(intmonth){ doublesalary=monthSalary+super.getSalary(month);//定义工资变量 returnsalary; }}HourlyEmployee.javaclassHourlyEmployeeextendsEmployee{ privatedoublehourlySalary;//定义属性hourlySalary每小时的工资 privateinthours;//定义属性hours每月工作的小时数 publicHourlyEmployee(){}//无参构造方法 //有参构造方法参数姓名生日月份每小时的工资每月工作的小时数 publicHourlyEmployee(Stringname,intmonth,doublehourlySalary,int hours){ super(name,month); //调用父类有参构造方法 this.hourlySalary=hourlySalary; //为属性hourlySalary初始化赋值 this.hours=hours; //为属性hours初始化赋值 } publicdoublegetHourlySalary(){//获取hourlySalary的值 returnhourlySalary; } publicintgetHours(){//获取hours的值 returnhours; } //定义set方法设置hourlySalaryhours的值 publicvoidsetHourlySalary(doublehourlySalary){ this.hourlySalary=hourlySalary; } publicvoidsetHourly(inthours){ this.hours=hours; } //覆盖父类方法 publicdoublegetSalary(intmonth){ if(hours<0){//如果工作小时数小于0输出数据错误 System.out.println(“数据错误”); return0; } //小于160个小时的按照每个月的工作小时数乘以每小时的工资 elseif(hours<=160) returnhourlySalary*hours+super.getSalary(month); //超出160个小时的小时数按照1.5倍计算 elsereturnhourlySalary*160+hourlySalary1.5(hours- 160)+super.getSalary(month); }}SalesEmployee.javaclassSalesEmployeeextendsEmployee{ privatedoublesales; //定义销售额sales privatedoublerate;//定义提成率rate publicSalesEmployee(){} publicSalesEmployee(Stringname,intmonth,doublesales,doublerate){ super(name,month); this.sales=sales; this.rate=rate; } publicdoublegetSales(){ returnsales; } publicdoublegetRate(){ returnrate; } publicvoidsetSales(doublesales){ this.sales=sales; } publicvoidsetRate(doublerate){ this.rate=rate; } publicdoublegetSalary(intmonth){ returnthis.getSales()(1+this.getRate())+super.getSalary(month); }}BasePlusSalesEmployee.javaclassBasePlusSalesEmployeeextendsSalesEmployee{ privatedoublebaseSalary;//定义基础工资baseSalary //无参构造方法 publicBasePlusSalesEmployee(){} //有参构造方法 publicBasePlusSalesEmployee(Stringname,intmonth,doublesales,double rate,doublebaseSalary){ super(name,month,sales,rate); this.baseSalary=baseSalary; } //get/set方法对私有属性的调用和设置 publicdoublegatBaseSalary(){ returnbaseSalary; } publicvoidsetBaseSalary(){ this.baseSalary=baseSalary; } publicdoublegetSalary(intmonth){ returnbaseSalary+super.getSalary(month); }}Test.java//定义一个测试类publicclassTest{ publicstaticvoidmain(String[]args){ //声明一个Employee类型的数组,并创建不同子类型的对象 Employee[]employee={newSalariedEmployee(“张三”,1,6000),new HourlyEmployee(“李 四”,2,50,180),newSalesEmployee(“王 五”,3,6500,0.15),newBasePlusSalesEmployee(“赵 六”,4,5000,0.15,2000)}; //打印每个员工的工资 for(inti=0;i<employee.length;i++) System.out.println(Math.round(employee[i].getSalary(10))); }}第5章 异常一、1.RuntimeException2.运行时异常编译时异常3.throw4.throws5.Exception二、1.错2.对3.对4.对5.错三、1.C2.A3.C4.C5.A四、1.try、catch、finally、throw、throws。2.程序通过try语句捕获可能出现的异常,如果try语句没有捕获到异常,则直接跳出try…catch语句块执行其他程序;如果在try语句中捕获到了异常,则程序会自动跳转到catch语句中找到匹配的异常类型进行相应的处理。如果try语句捕获到的异常与catch语句例的异常匹配,则先执行catch中的语句,最后执行其他程序语句。3.处理编译时期的异常有两种方式如下:(1)使用try…catch语句对异常进行捕获处理。(2)使用throws关键字声明抛出异常,调用者对异常进行处理。第6章 JavaAPI一、1.StringStringBufferStringBuilder2.length()3.DateFormat4.Random5.edcba二、1.错2.错3.对4.对5.错三、1.B2.C3.A4.B5.A四、1.String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuilder和StringBuffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer与StringBuilder类。如果有大量字符串拼接操作,不要求线程安全的情况下,采用StringBuilder更高效。相反如果需要线程安全则需要使用StringBuffer。2.基本数据类型对应的包装类byteBytecharCharacterintIntegershortShortlongLongfloatFloatdoubleDoublebooleanBoolean五、1.Example.javaimportjava.util.Random;publicclassExample{publicstaticvoidmain(String[]args){for(inti=0;i<10;i++){System.out.println(newRandom().nextInt(100));}}}2.Test.javaimportjava.text.DateFormat;importjava.util.Calendar;importjava.util.Date;publicclassTest{
publicstaticvoidmain(String[]args){
Calendarcalendar=Calendar.getInstance();
calendar.add(Calendar.DATE,100);
Datedate=calendar.getTime();
DateFormatformat=DateFormat.getDateInstance(DateFormat.FULL);
Stringstring=format.format(date);
System.out.println(string);
}}第7章 集合类一、1.Collection2.hashNext()next()3.Comparable4.Key(键)、Value(值)5.数组二、1.错2.对3.对4.对5.对三、1.D2.D3.C4.A5.C四、1.List的特点是元素有序、可重复。List接口的主要实现类有ArrayList和LinkedList。Set的特点是元素无序、不可重复。Set接口的主要实现类有HashSet和TreeSet。Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashMap和TreeMap。2.由于ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合查找元素很便捷。五、1.Example.javapublicclassExample{
publicstaticvoidmain(String[]args){
ArrayListlist=newArrayList<>();
list.add(“a”);
list.add(“b”);
list.add(“c”);
list.add(“a”);
for(Iteratorit=list.iterator();it.hasNext();){
System.out.println(it.next());
}
}}2.Test.javaimportjava.util.;classStudent{
privateintage;
privateStringname;
publicStudent(intage,Stringname){
this.age=age;
=name;
}
publicStringtoString(){
returnage+“:”+name;
}
publicinthashCode(){
returnname.hashCode()+age;
}
publicbooleanequals(Objectobj){
if(this==obj)
returntrue;
if(!(objinstanceofStudent))
returnfalse;
Studentstu=(Student)obj;
.equals()&&this.age==stu.age;
}}publicclassTest{
publicstaticvoidmain(String[]args){
HashSet<Student>hs=newHashSet<Student>();
hs.add(newStudent(18,“zhangsan”));
hs.add(newStudent(20,“lisa”));
hs.add(newStudent(20,“lisa”));
System.out.println(hs);
}}第8章 泛型一、1.参数化2.泛型类泛型接口泛型方法3.泛型方法4.实现二、1.错2.对3.对4.对5.对三、1.D2.A3.A4.AC四、1.(1)提高类型的安全性。泛型的主要目标是提高Java程序的类型安全性,即可以通过泛型定义对变量类型进行限制,在对变量类型限制之后编译器可以更好的进行类型验证。(2)避免强制类型转换。使用泛型的另一个好处是避免源代码中的许多强制类型转换。这使得代码可读性更高,并且减少出错机会。尽管减少强制类型转换可以降低使用泛型类代码的复杂度,但是声明泛型变量会带来相应的复杂操作。五、1.interfaceGeneric<T>{publicabstractvoidget(Tt){}}classGeneric<T>implementsGeneric{publicvoidget(Tt){}}第9章 反射一、1.动态2.newInstance()3.Method4.getDeclaredFields()5.Class二、1.对2.对3.对4.错5.对三、1.D2.C3.AC4.A5.C四、1.Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以得到任意一个对象所属的类的信息,可以调用任意一个类的成员变量和方法,可以获取任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。2.(1)根据类名获取:类名.class;(2)根据对象获取:对象.getClass();(3)根据全限定类名获取:Class.forName(“全限定类名”)。第10章 IO(输入输出)一、1.字节流字符流2.Reader3.BufferedInputStreamBufferedOutputStream4.InputStreamReaderOutputStreamWriter5.OutputStream二、1.对2.错3.错4.对5.错三、1.A2.A3.B4.C5.C四、1.字节流的两个基类是InputStream和OutputStream,字符流的两个基类是Reader和Writer,它们都是Object类的直接子类,字节流是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字节的字符流类。2.InputStreamReader是Reader的子类,它可以将一个字节输入流转换成字符输入流,方便直接读取字符。OutputStreamWriter是Writer的子类,它可以将一个字节输出流转换成字符输出流,方便直接写入字符。五、1.Test01.Javaimportjava.io.*;publicclassTest01{ publicstaticvoidmain(String[]args)throwsException{ //字节流拷贝 FileInputStreamin=newFileInputStream(“E:/src.txt”); FileOutputStreamout=newFileOutputStream(“E:/des1.txt”); byte[]buf=newbyte[1024]; intlen; while((len=in.read(buf))!=-1){ out.write(buf,0,len); } in.close(); out.close(); //字符流拷贝 BufferedReaderbf=newBufferedReader(new FileReader(“E:/src.txt”)); BufferedWriterbw=newBufferedWriter(new FileWriter(“E:/des2.txt”)); Stringstr; while((str=bf.readLine())!=null){ bw.write(str); bw.newLine(); } bf.close(); bw.close(); }}第11章 JDBC一、1.java.sql.DriverManager2.classpath3.update4.预编译5.1二、1.错2.对3.对4.对5.错三、1.B2.B3.C4.C5.A5.AD四、1.
1、加载并注册数据库驱动;
2、通过DriverManager获取数据库连接;
3、通过Connection对象获取Statement对象;4、使用Statement执行SQL语句;5、操作ResultSet结果集;
6、回收数据库资源。2.所谓预编译,就是说当相同的SQL语句再次执行时,数据库只需使用缓冲区中的数据,而不需要对SQL语句再次编译,从而有效提高数据的访问效率。第12章 多线程一、1.ThreadRunnable2.新建状态(New)、就绪状态(Runnable)、运行状态(Running)3.start()4.sleep()5.synchronized二、1.对2.对3.对4.错5.错三、1.C2.B3.B4.D5.BC四、1.一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。newThread(){publicvoidrun(){}}.start();另一种就是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。classMyThreadimplementsRunnable{ publicvoidrun(){}}2.同步代码块的作用是控制线程,保证同步代码块中只能有一个线程在运行,保证了多线程操作数据的安全性。五、1.Example.javapublicclassExample{
publicstaticvoidmain(String[]args){
TicketWindowtw=newTicketWindow();
newThread(tw,“线程1”).start();
newThread(tw,“线程2”).start();
}}classTicketWindowimplementsRunnable{
privateintnum=100;
publicvoidrun(){
while(num>0){
Threadth=Thread.currentThread();
Stringth_name=th.getName();
System.out.println(th_name+“正在发售第”+num–+“张票”);
}
}}第13章 网络编程一、1.链路层、网络层、运输层、应用层2.UDP3.TCP4.DatagramSocket5.ServerSocket二、1.错2.错3.对4.对5.对三、1.D2.A3.D4.C5.D四、1.UDP通信与TCP通信的区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地发送数据;而TCP通信是严格区分客户端与服务器端的,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以主动连接客户端,并且服务器端程序需要事先启动,等待客户端的连接。2.在TCP连接中必须要明确客户端与服务器端,由客户端向服务器端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认;第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求;第三次握手,客户端再次向服务器端发送确认信息,确认连接。五、AskServer.java/在线客服咨询人员/publicclassAskServer{publicstaticvoidmain(String[]args){//创建DatagramSocket,发送接收数据都依赖他DatagramSocketsocket=null;try{socket=newDatagramSocket(8888);Scannerinput=newScanner(System.in);while(true){//准备一个空的数据包,用来接收数据byte[]buf=newbyte[1024];DatagramPacketpacket=newDatagramPacket(buf,buf.length);//接收数据使用空的数据包socket.receive(packet);//输出信息Stringinfo=newString(packet.getData(),0, packet.getLength());System.out.println(“客户端请求:”+info);//判断是否退出if(“bye”.equals(info)){break;}//发送数据Stringresult=input.nextLine();byte[]buf2=result.getBytes();DatagramPacketpacket2=newDatagramPacket(buf2, buf2.length,packet.getAddress(),packet.getPort());
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/5786.html