【笔试训练】统计回文

news/2024/11/25 7:34:47/

一、单选

1、以下代码结果是什么()

public class foo {public static void main(String sgf[]) {StringBuffer a=new StringBuffer("A");StringBuffer b=new StringBuffer("B");operate(a,b);System.out.println(a+"."+b);}static void operate(StringBuffer x,StringBuffer y) {x.append(y);y=x;}
}

A. 代码可以编译运行,输出“AB.AB”。

B. 代码可以编译运行,输出“A.A”。

C. 代码可以编译运行,输出“AB.B”。

D. 代码可以编译运行,输出“A.B”。


答案:C

引用类型的传参传递的是地址。所以上述代码中的operate方法中给x拼接一个y的值,那么a的值就是AB,将x赋值给y表示的是将对象地址传给了y,y=x表示的是让y指向了其他对象。所以b的值没有变化,所以最终结果为AB.B

2、 在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()

A. this.A(x)    B. this(x)     C. super(x)    D. A(x)


答案:B

this.只能是类中的普通方法和属性,不能是构造方法,想要在类A的其他构造方法中调用这个构造方法使用的是this(x).

3、下面代码的运行结果是()

public static void main(String[] args){String s;System.out.println("s="+s);
}    

 A. 代码编程成功,并输出”s=”

B. 代码编译成功,并输出”s=null”

C. 由于String s没有初始化,代码不能编译通过。

D. 代码编译成功,但捕获到NullPointException异常


答案:C

这个s变量由于是在方法中,所以他是一个局部变量,Java中想要使用局部变量,就必须先给变量初始化。

4、以下代码的返回值是()

public boolean returnTest(){try{return true;}catch (Exception e){}finally{return false;}
}

A. true           B. false


答案:B

按照我们正常的思维程序遇到return就结束了,但是由于是try-catch,finally是一定会被执行的,最后执行的是finally中的代码,所以程序的输出结果为false.

5、指出以下程序运行的结果是

public class Example{String str=new String("good");char[]ch={'a','b','c'};public static void main(String args[]){Example ex=new Example();ex.change(ex.str,ex.ch);System.out.print(ex.str+" and ");System.out.print(ex.ch);}public void change(String str,char ch[]){//引用类型变量,传递的是地址,属于引用传递。str="test ok";ch[0]='g';}
}

A. good and abc    B. good and gbc     C. test ok and abc     D. test ok and gbc


答案:B

这个题和第一个题类似,引用类型传参,传递的是对象的地址,并不是对象的值。所以change方法中对对象的值做出的改变,会影响到方法外部的对象,但是change方法中str对象表示的意思为修改了形参str的执行,而不是修改对象中的值,并没有改变外部str的值。ch数组中将0下标位置的值修改为g,所以程序的最终输出结果为good and gbc.

二、多选 

下列有关JAVA异常处理的叙述中正确的是()

A. finally是为确保一段代码不管是否捕获异常都会被执行的一段代码

B. throws是用来声明一个成员方法可能抛出的各种非运行异常情况

C. final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承

D. throw是用来明确地抛出一个异常情况


答案:ABD

final修饰方法表示这个方法不能被重写,而不是被继承。

三、 统计回文

题目描述

 题目解析

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str1 = scan.nextLine();String str2 = scan.nextLine();//1、向str1中插入字符串str2。但是不能直接在str1字符串中插入,会导致str1发生改变//我们需要创建一个变量,使这个变量等于str1的值,对这个变量中的值进行修改int count = 0;//这里i能够等于str1的长度,是因为插入元素的时候,也可以插入到字符串的末尾for (int i = 0; i <= str1.length(); i++) {StringBuffer str3 = new StringBuffer(str1);str3.insert(i,str2);//2、逆置字符串str3StringBuffer str4 = new StringBuffer(str3);str4.reverse();//3、判断逆置前后字符串是否相同if(str4.toString().equals(str3.toString())){count++;}}System.out.println(count);}
}

 代码讲解:

  • 第一次创建StringBuffer对象是因为要创建一个新的对象,对新的对象进行操作,如果使用String来创建一个变量指向str1的话,只是将str1的地址传给了它,修改的对象还是str1所指向的对象。
  • 第二此创建新的StringBuffer对象是因为reverse方法操作的是,调用它的对象,不会返回新的对象,我们需要将逆置的对象的值与没有逆置的进行对比,判断是否为回文串。
  • 第3步时判断两个字符串是否相等,为什么不直接使用equals进行比较,还要调用toString方法。这是因为StringBuffer类中没有equals方法,我们需要使用toString方法将StringBuffer类型的对象转换成String类型的对象。

 

 

 



http://www.ppmy.cn/news/1021680.html

相关文章

Java # Spring(1)

一、概念 1、核心技术&#xff1a;依赖注入&#xff08;DI&#xff09;&#xff0c;AOP&#xff0c;事件&#xff08;events&#xff09;&#xff0c;资源&#xff0c;i18n&#xff0c;验证&#xff0c;数据绑定&#xff0c;类型转换&#xff0c;SpEL。 2、测试&#xff1a;模…

腾讯云轻量服务器和云服务器的CPU处理器有差别吗?

腾讯云轻量应用服务器和CVM云服务器的CPU处理器性能有差别吗&#xff1f;创建轻量应用服务器时不支持指定底层物理服务器的CPU型号&#xff0c;腾讯云将随机分配满足套餐规格的物理CPU型号&#xff0c;通常优先选择较新代次的CPU型号。而云服务器CVM的CPU处理器型号、主频都是有…

chrome插件开发实例05-页面间通信

目录 一、页面间通信的方式 方式1: 通过消息通信

vue2-组件通信

vue2-组件通信(非常重要) 1、props props 父子组件间的通信,父给子传参 传参分为函数类型和非函数类型 非函数类型 基本数据类型: 子组件不能修改父组件传过来的数据引用数据类型: 子组件不能修改父组件传过来的引用数据类型地址,可以改里面的属性(但是不推荐,违反了单项数据…

golang专栏

GOLANG专栏订阅会员 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教…

在编程下仰望

编程的尽头是数学 数学的尽头是物理 物理的尽头是哲学 哲学的尽头是耶稣 路漫漫其修远兮&#xff0c; 各位码农同仁 好自珍重

unity 修改默认脚本

using System.Collections; using System.Collections.Generic; using UnityEngine; //***************************************** //创建人&#xff1a; xxxx //功能说明&#xff1a; //***************************************** #ROOTNAMESPACEBEGIN# public class #SCRI…

机器学习模型是记忆还是泛化?论文摘要

主要内容摘要 文章探讨了机器学习模型在训练过程中是如何从记忆训练数据转变为正确泛化未见输入的现象。这一现象被称为“grokking”&#xff0c;自 2021 年研究人员在一系列小型模型上的发现后引起了广泛关注。文章通过观察小型模型的训练动态&#xff0c;揭示了这一现象的机…