习题1
1.Java语言的主要贡献者是谁?
2.编写、运行Java程序需要经过哪些主要步骤?
4.如果JDK的安装目录为D:\jdk,应当怎样设置path的值?
5.下列哪个是JDK提供的编译器?
A)java.exe
B)javac.exe
C)javap.exe
D)javaw.exe
6.Java源文件的扩展名是什么?Java字节码的扩展名是什么?
7.下列哪个是Java应用程序主类中正确的main方法声明?
A)publicvoidmain(Stringargs)
B)staticvoidmain(Stringargs)
C)publicstaticvoidMain(Stringargs)
D)publicstaticvoidmain(Stringargs)
习题2
1.模仿图2.4简单绘制出例子2中rectangle和lader对象的内存示意图。
2.模仿例子2编写含有3个类的Java应用程序,要求三个类分别在三个源文件中,其中一个源文件包含有名字为
Teacher的类,该类创建的对象调用add(doublea,doubleb)的方法可以得到2个数的和、调用sub(double
a,doubleb)的方法可以得到2个数的差;一个源文件包含有名字为Student的类,该类创建的对象调用speak()
的方法可以可以在命令行窗口输出“老师好”;一个源文件包含名字为MainClass的主类。要求在主类的main方
法中分别用Teacher和Student类创建对象,使得程序能输出12与236的和以及234与120的差,并输出“老师好
”。
3.当源文件中有多个类时,请简述源文件的命名规则。
4.当代码量较大时应当使用哪种编程风格?
习题3
1.什么叫标识符?标识符的规则是什么?true是否可以作为标识符。
2.什么叫关键字?true和false是否是关键字?请说出6个关键字。
3.Java的基本数据类型都是什么?
4.上机运行下列程序,注意观察输出的结果。
publicclassE{
publicstaticvoidmain(Stringargs){
for(inti=20302;i<=20322;i++){
System.out.println((char)i);
}
5.上机调试下列程序,注意System.out.print()和System.out.println()的区别。
publicclassOutputData{
intx=234,y=432;
System.out.println(x+"<"+(2*x));
System.out.print("我输出结果后不回车");
System.out.println("我输出结果后自动回车到下一行");
System.out.println("x+y="+(x+y));
6.编写一个Java应用程序,输出全部的大写英文字母。
7.是否可以将例子4中的
zhangSan.weight=reader.nextFloat();
更改为:
zhangSan.weight=reader.nexDouble();
习题4
1.下列程序的输出结果是什么?if-else语句的书写是否规范?
intx=10,y=5,z=100,result=0;
if(x>y)
x=z;
else
y=x;
z=y;
result=x+y+z;
System.out.println(result);
2.下列程序的输出结果是什么?
charc='\0';
for(inti=1;i<=4;i++){
switch(i){
case1:c='新';
System.out.print(c);
case2:c='亲';
break;
case3:c='斤';
default:System.out.print("!");
3.参考例子2,在应用程序中使用if-elseif-else多条件分支语句代替switch语句来判断整数的中奖情况。
4.为了节约用电,将用户的用电量分成3个区间,针对不同的区间给出不同的收费标准。对于1至90千瓦
的电量,每千瓦0.6元;对于91至150千瓦的电量,每千瓦1.1元;对于用大于151千瓦的电量,每千瓦1.7元。编
写一个Java应用程序程序。在主类的main方法中,输入用户的用电量,程序输出电费。
5.编写一个应用程序,用两个for循环语句分别输出大写和小写的“字母表”。
6.一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写一个应用程序求1000之内的所有完数。
7.编写一个应用程序求满足1+2!+3!…+n!<=9876的最大整数n。
习题5
1.类中的实例变量在什么时候会被分配内存空间?
2.什么叫方法的重载?构造方法可以重载吗?
3.类中的实例方法可以操作类变量(static变量)吗?类方法(static方法)可以操作实例变量吗?
4.类中的实例方法可以用类名直接调用吗?
5.简述类变量和实例变量的区别。
6.下列哪些类声明是错误的?
A)classA
B)publicclassA
C)protectedclassA
D)privateclassA
7.下列A类的类体中~哪些是错误的?
classTom{
privateintx=120;
protectedinty=20;
intz=11;
privatevoidf(){
x=200;
System.out.println(x);
voidg(){
publicclassA{
Tomtom=newTom();
tom.x=22;//
tom.y=33;//
tom.z=55;//
tom.f();//
tom.g();//
8.请说出A类中System.out.println的输出结果。
classB
{intx=100,y=200;
publicvoidsetX(intx)
{x=x;
publicvoidsetY(inty)
{this.y=y;
publicintgetXYSum()
{returnx+y;
publicclassA
{publicstaticvoidmain(Stringargs)
{Bb=newB();
b.setX(-100);
b.setY(-200);
System.out.println("sum="+b.getXYSum());
9.请说出A类中System.out.println的输出结果。
classB{
intn;
staticintsum=0;
voidsetN(intn){
this.n=n;
intgetSum(){
for(inti=1;i<=n;i++)
sum=sum+i;
returnsum;
Bb1=newB(),b2=newB();
b1.setN(3);
b2.setN(5);
ints1=b1.getSum();
ints2=b2.getSum();
System.out.println(s1+s2);
10.请说出E类中System.out.println的输出结果。
classA{
doublef(intx,doubley){
returnx+y;
intf(intx,inty){
returnx*y;
Aa=newA();
System.out.println(a.f(10,10));
System.out.println(a.f(10,10.0));
习题6
1.子类将继承父类的那些成员变量和方法?子类在什么情况下隐藏父类的成员变量和方法?
2.父类的final方法可以被子类重写吗?
3.什么类中可以有abstract方法?
4.什么叫对象的上转型对象?
5.下列叙述哪些是正确的?
final类不可以有子类。
abstract类中只可以有abstract方法。
abstract类中可以有非abstract方法,但该方法不可以用final修饰。
不可以同时用final和abstract修饰一个方法。
6.请说出E类中System.out.println的输出结果。
doublef(doublex,doubley){
classBextendsA{
doublef(intx,inty){
Bb=newB();
System.out.println(b.f(3,5));
System.out.println(b.f(3.0,5.0));
7.请说出E类中System.out.println的输出结果。
staticintg(intn){
returnn*n;
doublem=super.f(x,y);
returnm+x*y;
intm=A.g(n);
returnm+n;
System.out.println(b.f(10.0,8.0));
System.out.println(b.g(3));
习题7
1.接口中能声明变量吗?
2.接口中能定义非抽象方法吗?
3.什么叫接口的回调?
4.请说出E类中System.out.println的输出结果。
interfaceA{
doublef(doublex,doubley);
classBimplementsA{
publicdoublef(doublex,doubley){
intg(inta,intb){
returna+b;
Aa=newB();
System.out.println(a.f(3,5));
Bb=(B)a;
以太坊JavaScript库Ethers.js推出Shanghai升级前的测试网Shandong:10月16日消息,以太坊JavaScript库Ethers.js推出Shanghai升级前的测试网Shandong。这是与EF DevOps合作运行的实验性测试网,其激活了一组选定为 Shanghai 升级的 EIP(包括激活信标链取款功能的 EIP-4895),可用于早期的客户端测试。[2022/10/16 14:29:21]
System.out.println(b.g(3,5));
5.请说出E类中System.out.println的输出结果。
interfaceCom{
intadd(inta,intb);
abstractclassA{
abstractintadd(inta,intb);
classBextendsAimplementsCom{
publicintadd(inta,intb){
Comcom=b;
System.out.println(com.add(12,6));
Aa=b;
System.out.println(a.add(10,5));
习题8
1.内部类的外嵌类的成员变量在内部类中仍然有效吗?
2.内部类中的方法也可以调用外嵌类中的方法吗?
3.内部类的类体中可以声明类变量和类方法吗?
4.请说出下列程序的输出结果。
classCry{
publicvoidcry(){
System.out.println("大家好");
Cryhello=newCry(){
publicvoidcry(){
System.out.println("大家好,祝工作顺利!");
};
hello.cry();
习题9
1.下列叙述哪些是正确的?
String类是final类,不可以有子类。
String类在java.lang包中。
"abc"=="abc"的值是false.
"abc".equals("abc")的值是true
2.请说出E类中System.out.println的输出结果。
importjava.util.*;
classGetToken{
Strings;
publicStringgetToken(intindex,Stringstr){
StringTokenizerfenxi=newStringTokenizer(str);
intnumber=fenxi.countTokens();
s=newString;
intk=1;
while(fenxi.hasMoreTokens()){
Stringtemp=fenxi.nextToken();
s=temp;
k++;
if(index<=number)
returns;
returnnull;
classE{
Stringstr="WeLoveThisGame";
GetTokentoken=newGetToken();
Strings1=token.getToken(2,str),
s2=token.getToken(4,str);
System.out.println(s1+":"+s2);
3.请说出E类中System.out.println的输出结果。
byted="abc我们喜欢篮球".getBytes();
System.out.println(d.length);
Strings=newString(d,0,7);
System.out.println(s);
classMyString{
publicStringgetString(Strings){
StringBufferstr=newStringBuffer();
for(inti=0;i<s.length();i++){
if(i%2==0){
charc=s.charAt(i);
str.append(c);
returnnewString(str);
Strings="1234567890";
MyStringms=newMyString();
System.out.println(ms.getString(s));
Stringregex="\\djava\\w{1,}";
Stringstr1="88javaookk";
Stringstr2="9javaHello";
if(str1.matches(regex)){
System.out.println(str1);
if(str2.matches(regex)){
System.out.println(str2);
6.字符串调用publicStringtoUpperCase()方法返回一个字符串,该字符串把当前字符串中的小写字母变成大写字母;.字符串调用publicStringtoLowerCase()方法返回一个字符串,该字符串把当前字符串中的大写字母变成小写字母。String类的publicStringconcat(Stringstr)方法返回一个字符串,该字符串是把调用该方法的字符串与参数指定的字符串连接。编写一个程序,练习使用这3个方法。
7.String类的publiccharcharAt(intindex)方法可以得到当前字符串index位置上的一个字符。编写程序使用该方法得到一个字符串中的第一个和最后一个字符。
8.通过键盘输入年份和月份。程序输出相应的日历牌。
9.计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日通过通过键盘输入到程序中。
10.编程练习Math类的常用方法。
11.参看例子19,编写程序剔除一个字符串中的全部非数字字符,例如,将形如“ab123you”的非数字字符全部剔除,得到字符串“123”。
12.参看例子21,使用Scanner类的实例解析“数学87分,物理76分,英语96分”中的考试成绩,并计算出总成绩以及平均分数。
习题10
1.如果准备按字节读取一个文件的内容,应当使用FileInputStream流还是FileReader流?
2.FileInputStream流的read方法和FileReader流的read方法有何不同?
3.BufferedReader流能直接指向一个文件吗?
4.使用ObjectInputStream和ObjectOutputStream类有哪些注意事项?
5.怎样使用输入、输出流克隆对象?
6.使用RandomAccessFile流将一个文本文件倒置读出。
7.使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另
一个文件中。
8.了解打印流。我们已经学习了数据流,其特点是用Java的数据类型读写文件,但使用数据流写成的文
件用其它文件阅读器无法进行阅读(看上去是乱码)。PrintStream类提供了一个过滤输出流,该输出流能以文本
格式显示Java的数据类型。上机实习下列程序:
importjava.awt.*;
importjava.io.*;
try{
Filefile=newFile("p.txt");
FileOutputStreamout=newFileOutputStream(file);
PrintStreamps=newPrintStream(out);
ps.print(12345.6789);
ps.println("howareyou");
ps.println(true);
ps.close();
catch(IOExceptione){}
9.参考例子14,解析一个文件中的价格数据,并计算平均价格,比如该文件的内容如下:
商品列表:
电视机,2567元/台
洗衣机,3562元/台
冰箱,6573元/台
习题11
1.JFrame类的对象的默认布局是什么布局?
2.一个容器对象是否可以使用add方法添加一个JFrame窗口?
3.编写应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。窗口中添加两个文本区,当
我们在一个文本区中输入若干个数时,另一个文本区同时对你输入的数进行求和运算并求出平均值,也就是说
随着你输入的变化,另一个文本区不断地更新求和及平均值。
4.编写一个应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。设计四个按钮,分别命
名为“加”、“差”、“积、”、“除”,另外,窗口中还有三个文本框。单击相应的按钮,将两个文本框的
数字做运算,在第三个文本框中显示结果。要求处理NumberFormatException异常。
5.参照例子13编写一个体现MVC结构的GUI程序。首先编写一个封装梯形类,然后再编写一个窗口。要求窗口使
用三文本框和一个文本区为梯形对象中的数据提供视图,其中三个文本框用来显示和更新梯形对象的上底、下
底和高;文本区对象用来显示梯形的面积。窗口中有一个按钮,用户单击该按钮后,程序用3个文本框中的数据
分别作为梯形对象的上底、下底和高,并将计算出的梯形的面积显示在文本区中。
习题12
1.线程有几种状态?
2.引起线程中断的常见原因是什么?
3.一个线程执行完run方法后,进入了什么状态?该线程还能再调用start方法吗?
4.线程在什么状态时,调用isAlive()方法返回的值是false。
5.建立线程有几种方法?
6.怎样设置线程的优先级?
7.在多线程中,为什么要引入同步机制?
8.在什么方法中wait()方法、notify()及notifyAll()方法可以被使用?
9.将例子11中SellTicket类中的循环条件:
while(fiveAmount<3)
该写成:
if(fiveAmount<3)
是否合理。
10.线程调用interrupt()的作用是什么?
11.参照例子14,模拟三个人排队买票,张某、李某和赵某买电影票,售票员只有三张五元的钱,电影票5元钱
一张。张某拿二十元一张的新人民币排在李的前面买票,李某排在赵的前面拿一张10元的人民币买票,赵某拿
一张5元的人民币买票。
12.参照例子9,要求有3个线程:student1、student2和teacher,其中student1准备睡10分钟后再开始上课
,其中student2准备睡一小时后再开始上课。teacher在输出3句“上课”后,吵醒休眠的线程student1;
student1被吵醒后,负责再吵醒休眠的线程student2。
12.参照例子19,编写一个Java应用程序,在主线程中再创建3个线程:“运货司机”、“装运工”和“仓库管
动态 | Block.one发布Swift和Java版本的SDK:Block.one 发布两个新的开源EOSIO工具的Alpha版本,以增强EOSIO上的本地移动应用程序开发,分别是用于Swift和Java的EOSIO SDK。 这些软件开发工具包(SDK)可提供用于与EOSIO区块链交互的本机API;创建,签署和广播交易;处理密钥和获取签名;数据序列化/反序列化等。 鉴于移动应用的市场占有率以及这两门编程语言的普遍性,Block.one相信这两款SDK能够吸引更多的开发者基EOSIO 构建移动应用程序。[2019/5/17]
理员”。要求线程“运货司机”占有CPU资源后立刻联合线程“装运工”,也就是让“运货司机”一直等到“装
运工”完成工作才能开车,而“装运工”占有CPU资源后立刻联合线程“仓库管理员”,也就是让“装运工”
一直等到“仓库管理员”打开仓库才能开始搬运货物。
14.在下列E类中,System.out.println的输出结果是什么?
importjava.awt.event.*;
publicclassEimplementsRunnable{
StringBufferbuffer=newStringBuffer();
Threadt1,t2;
E(){
t1=newThread(this);
t2=newThread(this);
publicsynchronizedvoidaddChar(charc){
if(Thread.currentThread()==t1){
while(buffer.length()==0){
try{wait();
catch(Exceptione){}
buffer.append(c);
if(Thread.currentThread()==t2){
notifyAll();
publicstaticvoidmain(Strings){
Ehello=newE();
hello.t1.start();
hello.t2.start();
while(hello.t1.isAlive()||hello.t2.isAlive()){}
System.out.println(hello.buffer);
publicvoidrun(){
if(Thread.currentThread()==t1)
addChar('A');
if(Thread.currentThread()==t2)
addChar('B');
习题13
1.URL对象调用哪个方法可以返回一个指向该URL对象所包含的资源的输入流。
2.什么叫socket?怎样建立socket连接?
3.ServerSocket对象调用accept方法返回一个什么类型的对象?
4.InetAddress对象使用怎样的格式来表示自己封装的地址信息?
5.参照例子6,使用套接字连接编写网络程序,客户输入三角形的三边并发送给服务器,服务器把计算出的三
角形的面积返回给客户。
6.参照13.6.2节中的示例代码,使用RMI技术让客户调用远程对象读取服务器上的一个文本文件。
习题14
1.为了操作Derby数据库,需要把Java安装目录目录db/lib下的那些jar文件复制到Java运行环境的扩展
中?
2.参照例子2,编写一个应用程序来查询Derby数据库,用户可以从键盘输入数据库名、表名。
3.使用预处理语句的好处是什么?
4.什么叫事务,事务处理步骤是怎样的?
习题解答
习题一
1.JamesGosling
2.需3个步骤:
用文本编辑器编写源文件。
使用javac编译源文件,得到字节码文件。
使用解释器运行程序。
3.setclasspath=D:\jdk\jre\lib\rt.jar;.;
4.B
5.Java源文件的扩展名是.java,Java字节码的扩展名是.class。
6.D。
习题二
.
Teacher.java
publicclassTeacher{
doubleadd(doublea,doubleb){
doublesub(doublea,doubleb){
returna-b;
Student.java
publicclassStudent{
publicvoidspeak(){
System.out.println("老师好");
MainClass.java
publicclassMainClass{
Teacherzhang=newTeacher();
System.out.println(zhang.add(12,236));
System.out.println(zhang.add(234,120));
Studentjiang=newStudent();
jiang.speak();
3.如果源文件中有多个类,但没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了,如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java。
4.行尾风格。
习题三
用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。true不是标识符。
关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。不是关键字。classimplementsinterfaceenumextendsabstract。
boolean,char,byte,short,int,long,float,double。
4.属于操作题,解答略。
5
6.
charcStart='A',cEnd='Z';
for(charc=cStart;c<=cEnd;c++)
System.out.print(""+c);
7.不可以。
习题四
110。不规范。
.新亲亲斤!!。
publicclassJudgeAward{
voidgiveMess(intnumber){
if(number==9||number==131||number==12){
System.out.println(number+"是三等奖");
elseif(number==209||number==596||number==27){
System.out.println(number+"是二等奖");
elseif(number==875||number==316||number==59){
System.out.println(number+"是一等奖");
else{
System.out.println("未中奖");
importjava.util.Scanner;
publicclassComputer{
Scannerreader=newScanner(System.in);
doubleamount=0;//存放电量
doubleprice=0;//用户需要交纳的电费
System.out.print("输入电量:");
amount=reader.nextDouble();
if(amount<=90&&amount>=1){
price=amount*0.6;//计算price的值
elseif(amount<=150&&amount>=91){
price=90*0.6+(amount-90)*1.1;//计算price的值
elseif(amount>150){
price=90*0.6+(150-90)*1.1+(amount-150)*1.7;//计算price的值
System.out.println("输入电量:"+amount+"不合理");
System.out.printf("电费:%5.2f",price);
System.out.printf("%2c",c);
System.out.println();
System.out.printf("%2c",(c+32));
publicclassXiti5{
intsum=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);
intn=1,i=1,jiecheng=1;
longsum=0;
while(true){
jiecheng=1;
for(i=1;i<=n;i++){
jiecheng=jiecheng*i;
sum=sum+jiecheng;
if(sum>9876)
n++;
System.out.println("满足条件的最大整数:"+(n-1));
习题五
用类创建对象时。
一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。可以。
可以。不可以。
.不可以。
.一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。
.CD。
.。
8.sum=-100。
9.27。
10.100和20.0。
习题六
.如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法,继承的成员或方法的访问权限保持不变。当子类和父类不在同一个包中时,父类中的private和友好访问权限的成员变量不会被子类继承,也就是说,子类只继承父类中的protected和public访问权限的成员变量作为子类的成员变量;同样,子类只继承父类中的protected和public访问权限的方法作为子类的方法。如果所声明的成员的变量的名字和从父类继承来的成员变量的名字相同(声明的类型可以不同),在这种情况下,子类就会隐藏掉所继承的成员变量。
动态 | 供应链攻击再起 黑客入侵JavaScript库窃取钱包比特币:供应链攻击是一种高级且非常隐蔽的攻击模式,通常通过在软件的依赖库中嵌入恶意代码实现,近日降维安全实验室(johnwick.io)观察到有黑客获取了热门JavaScript库Event-Stream的控制权,并注入了恶意代码来窃取Copay钱包内的比特币等数字货币。该恶意代码默认休眠状态,当BitPay的Copay钱包启动后,就会自动激活。它将会窃取用户钱包内的私钥并发送至copayapi.host:8080。该恶意代码9月至11月期间感染了所有版本的Copay钱包。降维安全建议使用Copay钱包的用户升级到最新版Copay v5.2.2, 使用Event-Stream库的开发者请更新到v4.0.1。[2018/11/27]
.不可以。
.abstract类。
.A类是B类的父类,当用子类创建一个对象b,并把这个对象b的引用放到父类的对象a中时,称a是b的上转型对象。
.AD。
.15.0
8.0。
.98.0
12。
习题七
.不能。
.不能。
.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。
15.0
8。
18
15。
习题八
.有效。
.可以。
.不可以。
.大家好,祝工作顺利!
习题九
.ABD。
.Love:Game。
.15
abc我们。
.13579。
.9javaHello。
6.publicclassE{
Strings1,s2,t1="ABCDabcd";
s1=t1.toUpperCase();
s2=t1.toLowerCase();
System.out.println(s1);
System.out.println(s2);
Strings3=s1.concat(s2);
System.out.println(s3);
7.publicclassE{
Strings="ABCDabcd";
charcStart=s.charAt(0);
charcEnd=s.charAt(s.length()-1);
System.out.println(cStart);
System.out.println(cEnd);
8.
Scannerread=newScanner(System.in);
CalendarBeancb=newCalendarBean();
intyear=2000,month=1;
System.out.println("输入年:");
year=read.nextInt();
System.out.println("输入月:");
month=read.nextInt();
cb.setYear(year);
cb.setMonth(month);
Stringa=cb.getCalendar();//返回号码的一维数组
charstr="日一二三四五六".toCharArray();
for(charc:str){
System.out.printf("%3c",c);
for(inti=0;i<a.length;i++){//输出数组a
if(i%7==0)
System.out.println("");//换行
System.out.printf("%4s",a);
classCalendarBean{
Stringday;
intyear=0,month=0;
publicvoidsetYear(intyear){
this.year=year;
publicvoidsetMonth(intmonth){
this.month=month;
publicStringgetCalendar(){
Stringa=newString;
Calendarrili=Calendar.getInstance();
rili.set(year,month-1,1);
intweekDay=rili.get(Calendar.DAY_OF_WEEK)-1;//计算出1号的星期
intday=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day=31;
if(month==4||month==6||month==9||month==11)
day=30;
if(month==2){
if(((year%4==0)&&(year%100!=0))||(year%400==0))
day=29;
day=28;
for(inti=0;i<weekDay;i++)
a="";
for(inti=weekDay,n=1;i<weekDay+day;i++){
a=String.valueOf(n);
for(inti=weekDay+day;i<a.length;i++)
returna;
importjava.util.*;
intyear1,month1,day1,year2,month2,day2;
System.out.println("输入第一个日期的年、月、日(用空格或回车分隔):");
year1=read.nextInt();
month1=read.nextInt();
day1=read.nextInt();
System.out.println("输入第二个日期的年月日(用空格或回车分隔):");
year2=read.nextInt();
month2=read.nextInt();
day2=read.nextInt();
Calendarcalendar=Calendar.getInstance();
calendar.set(year1,month1-1,day1);
longtimeYear1=calendar.getTimeInMillis();
calendar.set(year2,month2-1,day2);
longtimeYear2=calendar.getTimeInMillis();
long相隔天数=Math.abs((timeYear1-timeYear2)/(1000*60*60*24));
System.out.println(""+year1+"年"+month1+"月"+day1+"日和"+
year2+"年"+month2+"月"+day2+"日相隔"+相隔天数+"天");
10.
doublea=0,b=0,c=0;
a=12;
b=24;
c=Math.asin(0.56);
System.out.println(c);
c=Math.cos(3.14);
c=Math.exp(1);
c=Math.log(8);
11.publicclassE{
Stringstr="ab123you你是谁?";
Stringregex="\\D+";
str=str.replaceAll(regex,"");
System.out.println(str);
12.importjava.util.*;
Stringcost="数学87分,物理76分,英语96分";
Scannerscanner=newScanner(cost);
scanner.useDelimiter("+");
doublesum=0;
intcount=0;
while(scanner.hasNext()){
try{doublescore=scanner.nextDouble();
count++;
sum=sum+score;
System.out.println(score);
catch(InputMismatchExceptionexp){
Stringt=scanner.next();
System.out.println("总分:"+sum+"分");
System.out.println("平均分:"+sum/count+"分");
习题十
.使用FileInputStream。
.FileInputStream按字节读取文件,FileReader按字符读取文件。
.不可以。
.使用对象流写入或读入对象时,要保证对象是序列化的。
.使用对象流很容易得获取一个序列化对象的克隆,只需将该对象写入到对象输出流,那么用对象输入流读回的对象一定是原对象的一个克隆。
6.
Filef=newFile("E.java");;
try{RandomAccessFilerandom=newRandomAccessFile(f,"rw");
random.seek(0);
longm=random.length();
while(m>=0){
m=m-1;
random.seek(m);
intc=random.readByte();
if(c<=255&&c>=0)
System.out.print((char)c);
else{
m=m-1;
random.seek(m);
bytecc=newbyte;
random.readFully(cc);
System.out.print(newString(cc));
}
}
}
catch(Exceptionexp){}
}
}
7.
importjava.io.*;
publicclassE{
publicstaticvoidmain(Stringargs){
Filefile=newFile("E.java");
FiletempFile=newFile("temp.txt");
try{FileReaderinOne=newFileReader(file);
BufferedReaderinTwo=newBufferedReader(inOne);
新一代安全高速主链项批露将支持JavaScript开发智能合约:上周获得李笑来硬币资本投资的新一代安全高速主链项目EON今日进一步披露其特性,表示支持JavaScript开发智能合约。c++开发需要有一定门槛,而且使用上也容易出错,相比之下,JavaScript就更平易,准确。EON支持javascript意味着很多以太坊的智能合约开发者,web开发者也能参与进来。针对最近区块链公司频发的各种隐患,漏洞问题,EON表示,因为有前360首席科学家、美国北卡州立大学终身教授蒋旭宪博士领衔的区块链安全团队PeckShield(派盾科技)保驾护航。[2018/6/12]
FileWritertofile=newFileWriter(tempFile);
BufferedWriterout=newBufferedWriter(tofile);
Strings=null;
inti=0;
s=inTwo.readLine();
while(s!=null){
i++;
out.write(i+""+s);
out.newLine();
s=inTwo.readLine();
}
inOne.close();
inTwo.close();
out.flush();
out.close();
tofile.close();
}
catch(IOExceptione){}
}
}
8.属于上机操作题,解答略。
9.importjava.io.*;
importjava.util.*;
publicclassE{
publicstaticvoidmain(Stringargs){
Filefile=newFile("a.txt");
Scannersc=null;
doublesum=0;
intcount=0;
try{sc=newScanner(file);
sc.useDelimiter("+");
while(sc.hasNext()){
try{doubleprice=sc.nextDouble();
count++;
sum=sum+price;
System.out.println(price);
}
catch(InputMismatchExceptionexp){
Stringt=sc.next();
}
}
System.out.println("平均价格:"+sum/count);
}
catch(Exceptionexp){
System.out.println(exp);
}
}
}
习题十一
1.Frame容器的默认布局是BorderLayout布局。
2.不可以。
3.
importjava.awt.*;
importjavax.swing.event.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassE{
publicstaticvoidmain(Stringargs){
Computerfr=newComputer();
}
}
classComputerextendsJFrameimplementsDocumentListener{
JTextAreatext1,text2;
intcount=1;
doublesum=0,aver=0;
Computer(){
setLayout(newFlowLayout());
text1=newJTextArea(6,20);
text2=newJTextArea(6,20);
add(newJScrollPane(text1));
add(newJScrollPane(text2));
text2.setEditable(false);
(text1.getDocument()).addDocumentListener(this);
setSize(300,320);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
publicvoidchangedUpdate(DocumentEvente){
Strings=text1.getText();
Stringa=s.split("+");
sum=0;
aver=0;
for(inti=0;i<a.length;i++){
try{sum=sum+Double.parseDouble(a);
}
catch(Exceptionee){}
}
aver=sum/count;
text2.setText(null);
text2.append("\n和:"+sum);
text2.append("\n平均值:"+aver);
}
publicvoidremoveUpdate(DocumentEvente){
changedUpdate(e);
}
publicvoidinsertUpdate(DocumentEvente){
changedUpdate(e);
}
}
4.
importjava.awt.*;
importjavax.swing.event.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassE{
publicstaticvoidmain(Stringargs){
ComputerFramefr=newComputerFrame();
}
}
classComputerFrameextendsJFrameimplementsActionListener{
JTextFieldtext1,text2,text3;
JButtonbuttonAdd,buttonSub,buttonMul,buttonDiv;
JLabellabel;
publicComputerFrame(){
setLayout(newFlowLayout());
text1=newJTextField(10);
text2=newJTextField(10);
text3=newJTextField(10);
label=newJLabel("",JLabel.CENTER);
label.setBackground(Color.green);
add(text1);
add(label);
add(text2);
add(text3);
buttonAdd=newJButton("加");
buttonSub=newJButton("减");
buttonMul=newJButton("乘");
buttonDiv=newJButton("除");
add(buttonAdd);
add(buttonSub);
add(buttonMul);
add(buttonDiv);
buttonAdd.addActionListener(this);
buttonSub.addActionListener(this);
buttonMul.addActionListener(this);
buttonDiv.addActionListener(this);
setSize(300,320);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
publicvoidactionPerformed(ActionEvente){
doublen;
if(e.getSource()==buttonAdd){
doublen1,n2;
try{n1=Double.parseDouble(text1.getText());
n2=Double.parseDouble(text2.getText());
n=n1+n2;
text3.setText(String.valueOf(n));
label.setText("+");
}
catch(NumberFormatExceptionee)
{text3.setText("请输入数字字符");
}
}
elseif(e.getSource()==buttonSub){
doublen1,n2;
try{n1=Double.parseDouble(text1.getText());
n2=Double.parseDouble(text2.getText());
n=n1-n2;
text3.setText(String.valueOf(n));
label.setText("-");
}
catch(NumberFormatExceptionee)
{text3.setText("请输入数字字符");
}
}
elseif(e.getSource()==buttonMul)
{doublen1,n2;
try{n1=Double.parseDouble(text1.getText());
n2=Double.parseDouble(text2.getText());
n=n1*n2;
text3.setText(String.valueOf(n));
label.setText("*");
}
catch(NumberFormatExceptionee)
{text3.setText("请输入数字字符");
}
}
elseif(e.getSource()==buttonDiv)
{doublen1,n2;
try{n1=Double.parseDouble(text1.getText());
研究表明:基于JavaScript钱包应用程序生成的比特币地址长期处于危险之中:据btcmanager消息,一组研究人员发布警告称,由于JavaScript函数存在漏洞,基于JavaScript的钱包应用程序生成的旧比特币地址可能长期存在安全风险。研究人员称,黑客可以利用旧的JavaScript加密缺陷窃取存储在这些地址中的比特币。他们用暴力破解,可以获得这些地址的私钥,并获取存放在其中的钱包和比特币的所有权。[2018/4/21]
n2=Double.parseDouble(text2.getText());
n=n1/n2;
text3.setText(String.valueOf(n));
label.setText("/");
}
catch(NumberFormatExceptionee)
{text3.setText("请输入数字字符");
}
}
validate();
}
}
5.importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassE{
publicstaticvoidmain(Stringargs){
Windowwin=newWindow();
win.setTitle("使用MVC结构");
win.setBounds(100,100,420,260);
}
}
classWindowextendsJFrameimplementsActionListener{
Laderlader;//模型
JTextFieldtextAbove,textBottom,textHeight;//视图
JTextAreashowArea;//视图
JButtoncontrolButton;//控制器
Window(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
voidinit(){
lader=newLader();
textAbove=newJTextField(5);
textBottom=newJTextField(5);
textHeight=newJTextField(5);
showArea=newJTextArea();
controlButton=newJButton("计算面积");
JPanelpNorth=newJPanel();
pNorth.add(newJLabel("上底:"));
pNorth.add(textAbove);
pNorth.add(newJLabel("下底:"));
pNorth.add(textBottom);
pNorth.add(newJLabel("高:"));
pNorth.add(textHeight);
pNorth.add(controlButton);
controlButton.addActionListener(this);
add(pNorth,BorderLayout.NORTH);
add(newJScrollPane(showArea),BorderLayout.CENTER);
}
publicvoidactionPerformed(ActionEvente){
try{
doubleabove=Double.parseDouble(textAbove.getText().trim());
doublebottom=Double.parseDouble(textBottom.getText().trim());
doubleheight=Double.parseDouble(textHeight.getText().trim());
lader.setAbove(above);
lader.setBottom(bottom);
lader.setHeight(height);
doublearea=lader.getArea();
showArea.append("面积:"+area+"\n");
}
catch(Exceptionex){
showArea.append("\n"+ex+"\n");
}
}
}
classLader{
doubleabove,bottom,height;
publicdoublegetArea(){
doublearea=(above+bottom)*height/2.0;
returnarea;
}
publicvoidsetAbove(doublea){
above=a;
}
publicvoidsetBottom(doubleb){
bottom=b;
}
publicvoidsetHeight(doublec){
height=c;
}
}
习题十二
1.4种状态:新建、运行、中断和死亡。
2.有4种原因的中断:JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。线程使用CPU资源期间,执行了sleep(intmillsecond)方法,使当前线程进入休眠状态。线程使用CPU资源期间,执行了wait()方法,使得当前线程进入等待状态。线程使用CPU资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起阻塞。
3.死亡状态,不能再调用start()方法。
4.新建和死亡状态。
5.两种方法:用Thread类或其子类。
6.使用setPrority(intgrade)方法。
7.Java使我们可以创建多个线程,在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。我们应对这样的问题作出处理,否则可能发生混乱。
8.当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。
9.不合理。
10.“吵醒”休眠的线程。一个占有CPU资源的线程可以让休眠的线程调用interrupt方法“吵醒”自己,即导致休眠的线程发生InterruptedException异常,从而结束休眠,重新排队等待CPU资源。
11.publicclassE{
publicstaticvoidmain(Stringargs){
Cinemaa=newCinema();
a.zhang.start();
a.sun.start();
a.zhao.start();
}
}
classTicketSeller//负责卖票的类。
{intfiveNumber=3,tenNumber=0,twentyNumber=0;
publicsynchronizedvoidsellTicket(intreceiveMoney)
{if(receiveMoney==5)
{fiveNumber=fiveNumber+1;
System.out.println(Thread.currentThread().getName()+
"给我5元钱,这是您的1张入场卷");
}
elseif(receiveMoney==10)
{while(fiveNumber<1)
{try{System.out.println(Thread.currentThread().getName()+"靠边等");
wait();
System.out.println(Thread.currentThread().getName()+"结束等待");
}
catch(InterruptedExceptione){}
}
fiveNumber=fiveNumber-1;
tenNumber=tenNumber+1;
System.out.println(Thread.currentThread().getName()+
"给我10元钱,找您5元,这是您的1张入场卷");
}
elseif(receiveMoney==20)
{while(fiveNumber<1||tenNumber<1)
{try{System.out.println(Thread.currentThread().getName()+"靠边等");
wait();
System.out.println(Thread.currentThread().getName()+"结束等待");
}
catch(InterruptedExceptione){}
}
fiveNumber=fiveNumber-1;
tenNumber=tenNumber-1;
twentyNumber=twentyNumber+1;
System.out.println(Thread.currentThread().getName()+
"给20元钱,找您一张5元和一张10元,这是您的1张入场卷");
}
notifyAll();
}
}
classCinemaimplementsRunnable
{Threadzhang,sun,zhao;
TicketSellerseller;
Cinema()
{zhang=newThread(this);
sun=newThread(this);
zhao=newThread(this);
zhang.setName("张小有");
sun.setName("孙大名");
zhao.setName("赵中堂");
seller=newTicketSeller();
}
publicvoidrun()
{if(Thread.currentThread()==zhang)
{seller.sellTicket(20);
}
elseif(Thread.currentThread()==sun)
{seller.sellTicket(10);
}
elseif(Thread.currentThread()==zhao)
{seller.sellTicket(5);
}
}
}
12.
publicclassE{
publicstaticvoidmain(Stringargs){
ClassRoomroom6501=newClassRoom();
room6501.student1.start();
room6501.student2.start();
try{Thread.sleep(1000);
}
catch(Exceptionexp){}
room6501.teacher.start();
}
}
classClassRoomimplementsRunnable{
Threadstudent1,student2,teacher;
ClassRoom(){
teacher=newThread(this);
student1=newThread(this);
student2=newThread(this);
teacher.setName("王教授");
student1.setName("张三");
student2.setName("李四");
}
publicvoidrun(){
if(Thread.currentThread()==student1){
try{System.out.println(student1.getName()+"正在睡觉,不听课");
Thread.sleep(1000*60*10);
}
catch(InterruptedExceptione){
System.out.println(student1.getName()+"被老师叫醒了");
}
System.out.println(student1.getName()+"开始听课");
student2.interrupt();//吵醒student2
}
elseif(Thread.currentThread()==student2){
try{System.out.println(student2.getName()+"正在睡觉,不听课");
Thread.sleep(1000*60*60);
}
catch(InterruptedExceptione){
System.out.println(student2.getName()+"被张三叫醒了");
}
System.out.println(student2.getName()+"开始听课");
}
elseif(Thread.currentThread()==teacher){
for(inti=1;i<=3;i++){
System.out.println("上课!");
try{Thread.sleep(500);
}
catch(InterruptedExceptione){}
}
student1.interrupt();//吵醒student1
}
}
}
13.
publicclassE{
publicstaticvoidmain(Stringargs){
JoinWorkwork=newJoinWork();
work.司机.start();
}
}
classJoinWorkimplementsRunnable{
Thread司机;
Thread装运工;
Thread管理员;
JoinWork(){
司机=newThread(this);
装运工=newThread(this);
管理员=newThread(this);
}
publicvoidrun(){
if(Thread.currentThread()==司机){
System.out.println("司机等待装运工装车");
try{
装运工.start();
装运工.join();
}
catch(InterruptedExceptione){}
System.out.println("司机开车走了");
}
elseif(Thread.currentThread()==装运工){
System.out.println("装运工等待管理员");
try{
管理员.start();
管理员.join();
}
catch(InterruptedExceptione){}
System.out.println("装运工把车装载完毕");
}
elseif(Thread.currentThread()==管理员){
System.out.println("管理员把装车手续办好,打开仓库大门");
}
}
}
14.BA
习题十三
1.URL对象调用InputStreamopenStream()方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源信息读入到客户端。
2.客户端的套接字和服务器端的套接字通过输入、输出流互相连接后进行通信。
3.使用方法accept(),accept()会返回一个和客户端Socket对象相连接的Socket对象。accept方法会堵塞线程的继续执行,直到接收到客户的呼叫。。
4.域名/IP。
5.客户端
importjava.net.*;
importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassClient
{publicstaticvoidmain(Stringargs)
{newComputerClient();
}
}
classComputerClientextendsFrameimplementsRunnable,ActionListener
{Buttonconnection,send;
TextFieldinputText,showResult;
Socketsocket=null;
DataInputStreamin=null;
DataOutputStreamout=null;
Threadthread;
ComputerClient()
{socket=newSocket();
setLayout(newFlowLayout());
Boxbox=Box.createVerticalBox();
connection=newButton("连接服务器");
send=newButton("发送");
send.setEnabled(false);
inputText=newTextField(12);
showResult=newTextField(12);
box.add(connection);
box.add(newLabel("输入三角形三边的长度,用逗号或空格分隔:"));
box.add(inputText);
box.add(send);
box.add(newLabel("收到的结果:"));
box.add(showResult);
connection.addActionListener(this);
send.addActionListener(this);
thread=newThread(this);
add(box);
setBounds(10,30,300,400);
setVisible(true);
validate();
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}
});
}
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==connection)
{try//请求和服务器建立套接字连接:
{if(socket.isConnected())
{}
else
{InetAddressaddress=InetAddress.getByName("127.0.0.1");
InetSocketAddresssocketAddress=newInetSocketAddress(address,4331);
socket.connect(socketAddress);
in=newDataInputStream(socket.getInputStream());
out=newDataOutputStream(socket.getOutputStream());
send.setEnabled(true);
thread.start();
}
}
catch(IOExceptionee){}
}
if(e.getSource()==send)
{Strings=inputText.getText();
if(s!=null)
{try{out.writeUTF(s);
}
catch(IOExceptione1){}
}
}
}
publicvoidrun()
{Strings=null;
while(true)
{try{s=in.readUTF();
showResult.setText(s);
}
catch(IOExceptione)
{showResult.setText("与服务器已断开");
break;
}
}
}
}
服务器端
importjava.io.*;
importjava.net.*;
importjava.util.*;
publicclassServer
{publicstaticvoidmain(Stringargs)
{ServerSocketserver=null;
Server_threadthread;
Socketyou=null;
while(true)
{try{server=newServerSocket(4331);
}
catch(IOExceptione1)
{System.out.println("正在监听");//ServerSocket对象不能重复创建
}
try{System.out.println("等待客户呼叫");
you=server.accept();
System.out.println("客户的地址:"+you.getInetAddress());
}
catch(IOExceptione)
{System.out.println("正在等待客户");
}
if(you!=null)
{newServer_thread(you).start();//为每个客户启动一个专门的线程
}
}
}
}
classServer_threadextendsThread
{Socketsocket;
DataOutputStreamout=null;
DataInputStreamin=null;
Strings=null;
booleanquesion=false;
Server_thread(Sockett)
{socket=t;
try{out=newDataOutputStream(socket.getOutputStream());
in=newDataInputStream(socket.getInputStream());
}
catch(IOExceptione)
{}
}
publicvoidrun()
{while(true)
{doublea=newdouble;
inti=0;
try{s=in.readUTF();//堵塞状态,除非读取到信息
quesion=false;
StringTokenizerfenxi=newStringTokenizer(s,",");
while(fenxi.hasMoreTokens())
{Stringtemp=fenxi.nextToken();
try{a=Double.valueOf(temp).doubleValue();i++;
}
catch(NumberFormatExceptione)
{out.writeUTF("请输入数字字符");
quesion=true;
}
}
if(quesion==false)
{doublep=(a+a+a)/2.0;
out.writeUTF(""+Math.sqrt(p*(p-a)*(p-a)*(p-a)));
}
}
catch(IOExceptione)
{System.out.println("客户离开");
return;
}
}
}
}
6.解答略
习题十四
1.添加数据源,选择驱动程序,命名数据源名称。
2.importjava.sql.*;
importjava.util.*;
publicclassE{
publicstaticvoidmain(Stringargs){
Queryquery=newQuery();
StringdataSource="myData";
StringtableName="goods";
Scannerread=newScanner(System.in);
System.out.print("输入数据源名:");
dataSource=read.nextLine();
System.out.print("输入表名:");
tableName=read.nextLine();
query.setDatasourceName(dataSource);
query.setTableName(tableName);
query.setSQL("SELECT*FROM"+tableName);
query.inputQueryResult();
}
}
classQuery{
StringdatasourceName="";//数据源名
StringtableName="";//表名
StringSQL;//SQL语句
publicQuery(){
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundExceptione){
System.out.print(e);
}
}
publicvoidsetDatasourceName(Strings){
datasourceName=s.trim();
}
publicvoidsetTableName(Strings){
tableName=s.trim();
}
publicvoidsetSQL(StringSQL){
this.SQL=SQL.trim();
}
publicvoidinputQueryResult(){
Connectioncon;
Statementsql;
ResultSetrs;
try{
Stringuri="jdbc:odbc:"+datasourceName;
Stringid="";
Stringpassword="";
con=DriverManager.getConnection(uri,id,password);
DatabaseMetaDatametadata=con.getMetaData();
ResultSetrs1=metadata.getColumns(null,null,tableName,null);
int字段个数=0;
while(rs1.next()){
字段个数++;
}
sql=con.createStatement();
rs=sql.executeQuery(SQL);
while(rs.next()){
for(intk=1;k<=字段个数;k++){
System.out.print(""+rs.getString(k)+"");
}
System.out.println("");
}
con.close();
}
catch(SQLExceptione){
System.out.println("请输入正确的表名"+e);
}
}
}
3.importjava.sql.*;
importjava.util.*;
publicclassE{
publicstaticvoidmain(Stringargs){
Queryquery=newQuery();
StringdataSource="myData";
StringtableName="goods";
query.setDatasourceName(dataSource);
query.setTableName(tableName);
Stringname="";
Scannerread=newScanner(System.in);
System.out.print("商品名:");
name=read.nextLine();
Stringstr="'%%'";
StringSQL="SELECT*FROM"+tableName+"WHEREnameLIKE"+str;
query.setSQL(SQL);
System.out.println(tableName+"表中商品名是"+name+"的记录");
query.inputQueryResult();
}
}
classQuery{
StringdatasourceName="";//数据源名
StringtableName="";//表名
StringSQL;//SQL语句
publicQuery(){
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundExceptione){
System.out.print(e);
}
}
publicvoidsetDatasourceName(Strings){
datasourceName=s.trim();
}
publicvoidsetTableName(Strings){
tableName=s.trim();
}
publicvoidsetSQL(StringSQL){
this.SQL=SQL.trim();
}
publicvoidinputQueryResult(){
Connectioncon;
Statementsql;
ResultSetrs;
try{
Stringuri="jdbc:odbc:"+datasourceName;
Stringid="";
Stringpassword="";
con=DriverManager.getConnection(uri,id,password);
DatabaseMetaDatametadata=con.getMetaData();
ResultSetrs1=metadata.getColumns(null,null,tableName,null);
int字段个数=0;
while(rs1.next()){
字段个数++;
}
sql=con.createStatement();
rs=sql.executeQuery(SQL);
while(rs.next()){
for(intk=1;k<=字段个数;k++){
System.out.print(""+rs.getString(k)+"");
}
System.out.println("");
}
con.close();
}
catch(SQLExceptione){
System.out.println("请输入正确的表名"+e);
}
}
}
4.将例子5中的代码:
StringSQL="SELECT*FROM"+tableName+"ORDERBYname";
更改为:
StringSQL="SELECT*FROM"+tableName+"ORDERBYmadeTime";
可达题目要求。
5.使用预处理语句不仅减轻了数据库的负担,而且也提高了访问数据库的速度。
6.事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。步骤:
(1)使用setAutoCommit(booleanautoCommit)方法con对象首先调用setAutoCommit(booleanautoCommit)方法,将参数autoCommit取值false来关闭默认设置:
con.setAutoCommit(false);
(2)使用commit()方法。con调用commit()方法就是让事务中的SQL语句全部生效。
(3)使用rollback()方法。con调用rollback()方法撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据发生变化的SQL语句操作,将数据库中的数据恢复到commi()方法执行之前的状态。
7.解答略。
关于钟表,之前我们在文章《开宗立派:第一个钟摆是谁发明的?为何路易十四风格的钟表让人难忘》《她与伏尔泰、莫里哀等人一起被人们永远怀念.
1900/1/1 0:00:00这是一个和你我都息息相关的故事,即使它可能颠覆你的认知。 文|杨林编辑|杨轩来源|36氪Pro封面来源|视觉中国编者按:这是36氪关于互联网“另类”创业者报道系列的第一篇,我们给这个系列起了一个.
1900/1/1 0:00:00百济神州泽布替尼向全球重磅炸弹伊布替尼发起的挑战胜负已分,势要与其角逐百亿美金市场的“王座”。12月14日,百济神州公布了公司自主研发的BTK抑制剂泽布替尼在全球3期头对头研究ALPINE试验中.
1900/1/1 0:00:00在昨天晚上公布的数据之后,比特币和山寨币明显增加,市场以绿色开盘。 查看比特币和以太坊的价格,观察到略有上涨。在昨天的收益和公布的数据之后,市场的主要代币经历了一次缓解反弹.
1900/1/1 0:00:00这是一个看涨的周二交易日,投资者对中国零COVID政策和FTX传染风险的担忧有所缓解,支持纳斯达克脱钩。 重要见解: 对于加密货币前十名来说,这是一个看涨的周二会议.
1900/1/1 0:00:00由于其不可预测性和投机倾向,比特币长期以来一直受到质疑。世界上最大的金融机构之一高盛也持有类似的保留意见,这似乎已被加密领域的最新发展所证实.
1900/1/1 0:00:00