java基础编程题

2024-05-19

java基础编程题(通用6篇)

java基础编程题 篇1

1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset

import java.util.*;

public class bycomma{

public static String[] splitStringByComma(String source){

if(source==null||source.trim.equals(“”))

return null;

StringTokenizer commaToker = new StringTokenizer(source,“,”);

String[] result = new String[commaToker.countTokens()];

int i=0;

while(commaToker.hasMoreTokens()){

result[i] = commaToker.nextToken();

i++;

}

return result;

}

public static void main(String args[]){

String[] s = splitStringByComma(“5,8,7,4,3,9,1”);

int[] ii = new int[s.length];

for(int i = 0; i

ii[i] =Integer.parseInt(s[i]);

}

Arrays.sort(ii);

//asc

for(int i=0;i

System.out.println(ii[i]);

}

//desc

for(int i=(s.length-1);i>=0;i--){

System.out.println(ii[i]);

}

}

}

2.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半 个”。

代码:

public static boolean isLetter(char c){

int k=0X80;

return c/k==0?true:false;

}

public static int lengths(String strSrc){

if (strSrc==null){

return 0;

}

int len=0;

char[] strChar=strSrc.toCharArray();

for (int i=0;i

len++;

if (!isLetter(strChar[i])) len++;

}

return len;

}

public static String subString(String origin,int len){

if (origin==null || origin.equals(“”)|| len<1){

return “”;

}

if (len>lengths(origin)){

return origin;

}

byte[] strByte=new byte[len];

System.arraycopy(origin.getBytes(),0,strByte,0,len);

int count=0;

for (int i=0;i

int value=(int)strByte[i];

if (value<0) count++;

}

if (count % 2 !=0){

//len=(len==1)?++len:--len;

--len;

}

return new String(strByte,0,len);

}

public static void main(String[] args) {

System.out.println(“”+ subString(“我ABC汉DEF”,6));

}

3、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

/ /使用快速排序方法对a[ 0 :n- 1 ]排序从a[ 0 :n- 1 ]中选择一个元素作为m I d d l e,该元素为支点把余下的元素分割为两段left 和r I g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点递归地使用快速排序方法对left 进行排序递归地使用快速排序方法对right 进行排序所得结果为l e f t + m I d d l e + r I g h t

//以下为java程序实现的快速排序算法:

public static void sort(int[] data) {

quickSort(data,0,data.length-1);

}

public static void quickSort(int[] data,int low,int high){

int pivotIndex=(low+high)/2;

swap(data,pivotIndex,high);

int k=partition(data,low-1,high,data[high]);

swap(data,k,high);

if ((k-low)>1) partition(data,low,k-1);

if ((high-k)>1) partition(data,k+1,high);

}

public static int partition(int[] data int low,int high, int pivot ){

do {

while (data[++low]

while (high!=0 && data[--high]>pivot);

swap(data,low,high);

}

while (low

swap(data,low,high);

return low;

}

public static void swap(int[] data int low,int high){

int tmp=data[low];

data[low]=data[high];

data[high]=tmp;

}

public static void main(String[] args){

int[] data = new int[]{89,32,425,32,78,1,53,92};

sort(data);

}

4.试用递归的方法写一下计算菲波那契数列的通项f(n),已知f1=1,f2=1,以后每项都是前两项的和。

..............

public static long fibonacci(long m){

if (m==0 || m==1) return m;

else return fibonacci(m-1)+fibonacci(m-2);

}

5. 写一个Singleton出来。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

一般Singleton模式通常有几种种形式:

第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的 getInstance方法获取对它的引用,继而调用其中的方法。

Public class Singleton {

private Singleton(){}

//在自己内部定义自己一个实例,是不是很奇怪?

//注意这是private 只供内部调用

private static Singleton instance = new Singleton();

//这里提供了一个供外部访问本class的静态方法,可以直接访问

public static Singleton getInstance() {

return instance;

}

}

第二种形式:

public class Singleton {

private static Singleton instance = null;

public static synchronized Singleton getInstance() {

//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次

//使用时生成实例,提高了效率!

if (instance==null)

instance=new Singleton();

return instance;

}

}

其他形式:

定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些

6、创建一个静态方法,给它传入一个对象,请循环的打印出该对象所在类的类名和所实现的方法名(华为笔试最后一道编程)

import java.lang.reflect.*;

public class Test{

public static void test(Object obj){

Class clazz=obj.getClass();

//System.out.println(“类名:”+clazz.getName());

Method[] ms=clazz.getDeclaredMethods();

long len=Array.getLength(ms);

for(int i=0;i

System.out.println(“类名:”+clazz.getName()+“方法名:”+ms[i].getName());

}

}

class A{

public void b(){}

public void c(){}

public void d(){}

public void e(){}

}

public static void main(String[] args){

Test t=new Test();

Test.A a=t.new A();

test(a);

}

}

7、假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String s = null;

try {

s = br.readLine();

} catch (IOException e) {

e.printStackTrace();

}

StringTokenizer st = new StringTokenizer(s);

String s1 = st.nextToken();

String s2 = st.nextToken();

byte[] sa1 = s1.getBytes();

byte[] sb2 = s2.getBytes();

Arrays.sort(sa1);

Arrays.sort(sb2);

String ss1 = new String(sa1);

String ss2 = new String(sb2);

if(ss1.equals(ss2))

System.out.println(“equal”);

else

System.out.println(“not equal”);

8、给你一组字符串如:iu7i8hy4jnb2,让你编程输出里面的数字:7842

用正规表达式:“iu7i8hy4jnb2”.replaceAll(“[^d]”,“”);

9、给你一组字符串让你把它倒叙输出

public static String flashBack(String origin) {

String result = “”;

for (int i = origin.length(); i >0; i--) {

String tmp = origin.substring(i - 1, i);

result += tmp;

}

return result;

}

10、给你一组字符如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,出现几次

public void fun4() {

int[] a = { 4, 1, 2, 4, 5, 1, 1, 1, 5, 1, 3, 4, 5 };

Arrays.sort(a);

for (int i = 0; i < a.length; i++) {

System.out.print(a[i] + “ ”);

}

System.out.println();

int maxNumber = a[a.length - 1], maxCount = 1;

int curNumber = a[a.length - 1], curCount = 1;

for (int i = a.length - 1; i >0; i--) {

curNumber = a[i];

if (a[i] == a[i - 1]) {

curCount++;

} else {

System.out.println(“i=” + i + “,curCount=” + curCount+ “,maxCount=” + maxCount + “,maxNumber=” + maxNumber);

if (curCount >maxCount) {

maxCount = curCount;

maxNumber = curNumber;

}

curCount = 1;

}

}

if (curCount >maxCount) {

maxCount = curCount;

//maxNumber = curNumber;

}

System.out.println(“curCount=” + curCount + “,maxCount=” + maxCount + “,maxNumber=” + maxNumber);

}

11、求两个数的公约数,M,N

int divisor =1;

for (int i = 2; i <= b; i++) {

if(a%i==0 && b%i==0){

divisor = i;

}

}

System.out.println(a+“和”+b+“的最大公约数是:”+divisor);

}

12、实现数组复制

public void fun8(){

int[] a = {1,2,3,4,56,7,8};

int[] b = (int[])a.clone();

Conica.print(a);

Conica.print(b);

b[0]=100;

Conica.print(a);

Conica.print(b);

}

13、冒泡排序的实现

public void fun9(){

int[] a = {1,5,2,6,8,74,1,25,69,8};

Conica.print(a);

for(int i=0; i

for(int j=0; j

if(a[j]>a[j+1]){

int temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

}

}

}

Conica.print(a);

}

14、编程显示某一文件目录下的文件名

public void fun10(){

File file = new File(“G:�3月份”);

if(file.exists()){

if(file.isDirectory()){

String[] files = file.list();

Conica.println(files);

}

}

}

15、从键盘输入4个十进制数字字符,将其转换为4位时间之数并显示出来

16、编程实现统计文本文件中某个单词的出现频率,并输出统计结果

用HashMap来解决

假设单词不存在跨行的,每个单词用,. ;分割

public static void countNum() throws IOException {

BufferedReader br = null;

try {

br = new BufferedReader(new FileReader(“c://file.txt”));

Map map = new HashMap();

for (String s = br.readLine(); s != null; s = br.readLine()) {

StringTokenizer st = new StringTokenizer(s, “,. ;”);

while (st.hasMoreTokens()) {

String temp = st.nextToken();

if (map.containsKey(temp)) {

map.put(temp, new Integer((Integer)map.get(temp) + 1));

} else {

map.put(temp, new Integer(1));

}

}

}

for (Iterator it = map.entrySet().iterator(); it.hasNext();) {

Map.Entry entry = (Map.Entry) it.next();

System.out.println(entry.getKey() + “-->” + entry.getValue()

+ “times”);

}

} finally {

br.close();

}

}

17、编程模仿DOS下的dir命令,列出某个目录下的内容

18、编程说明String和StringBuffer字符串的区别

19、编程计算N!的程序,一个使用递归方法,一个不用递归方法

递归 :

long fuction(int n){

if (n==0) return 1;

else

return n* fuction(n-1);

}

不递 :

long s=1;

for(int i=2;i<=n;i++)

{

s*=i;

}

20、编程实现ASCII码和Unicode码之间的转换

21.用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求: “4 ”不能在第三位, “3 ”与 “5 ”不能相连.

此题具体算法及程序可参考:

topic.csdn.net/u/0114/14/1170e023-e8f0-4331-8bd8-516c6f1e40da.html

22。一个字符串中可能包含a~z中的多个字符,如有重复,如String data=“aavzcadfdsfsdhshgWasdfasdf”,求出现次数最多的那个字母及次数,如有多个重复的则都求出。〔金山公司面试题〕

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.TreeSet;

public class FindRepeatChar {

public static void doString(String strInput) {

char[] chars = strInput.toCharArray();

ArrayList lists = new ArrayList();

TreeSet set = new TreeSet();

for (int i = 0; i < chars.length; i++) {

lists.add(String.valueOf(chars[i]));

set.add(String.valueOf(chars[i]));

}

System.out.println(set);

Collections.sort(lists);

System.out.println(lists);

StringBuffer sb = new StringBuffer();

for (int i = 0; i < lists.size(); i++) {

sb.append(lists.get(i));

}

strInput = sb.toString();

System.out.println(strInput);

int max = 0;

String maxString = “”;

ArrayList maxList = new ArrayList();

for (Iterator its = set.iterator(); its.hasNext();) {

String s = (String) its.next();

int begin = strInput.indexOf(os);

int end = strInput.lastIndexOf(os);

int value = end - begin + 1;

if (value >max && value >1) {

max = value;

maxString = os;

maxList.add(os);

} else if (value == max) {

maxList.add(os);

}

}

int index = 0;

for (int i = 0; i < maxList.size(); i++) {

if (maxList.get(i).equals(maxString)) {

index = i;

break;

}

}

System.out.println(“出现最多的字符为:”);

for (int i = 0; i < maxList.size(); i++) {

System.out.println(maxList.get(i) + “”);

}

System.out.println();

System.out.println(“出现最多的次数为:” + max);

}

public static void main(String[] args) {

String strInput = new String(“aavzcadfdsfsdhshgWasdfasdf”);

doString(strInput);

}

}

23.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

package test.money;

import java.text.NumberFormat;

import java.util.HashMap;

public class SimpleMoneyFormat {

public static final String EMPTY = “”;

public static final String ZERO = “零”;

public static final String NE = “壹”;

public static final String TWO = “贰”;

public static final String THREE = “叁”;

public static final String FOUR = “肆”;

public static final String FIVE = “伍”;

public static final String SIX = “陆”;

public static final String SEVEN = “柒”;

public static final String EIGHT = “捌”;

public static final String NINE = “玖”;

public static final String TEN = “拾”;

public static final String HUNDRED = “佰”;

public static final String THOUSAND = “仟”;

public static final String TEN_THOUSAND = “万”;

public static final String HUNDRED_MILLION = “亿”;

public static final String YUAN = “元”;

public static final String JIAO = “角”;

public static final String FEN = “分”;

public static final String DOT = “.”;

private static SimpleMoneyFormat formatter = null;

private HashMap chineseNumberMap = new HashMap();

private HashMap chineseMoneyPattern = new HashMap();

private NumberFormat numberFormat = NumberFormat.getInstance();

private SimpleMoneyFormat() {

numberFormat.setMaximumFractionDigits(4);

numberFormat.setMinimumFractionDigits(2);

numberFormat.setGroupingUsed(false);

chineseNumberMap.put(“0”, ZERO);

chineseNumberMap.put(“1”, ONE);

chineseNumberMap.put(“2”, TWO);

chineseNumberMap.put(“3”, THREE);

chineseNumberMap.put(“4”, FOUR);

chineseNumberMap.put(“5”, FIVE);

chineseNumberMap.put(“6”, SIX);

chineseNumberMap.put(“7”, SEVEN);

chineseNumberMap.put(“8”, EIGHT);

chineseNumberMap.put(“9”, NINE);

chineseNumberMap.put(DOT, DOT);

chineseMoneyPattern.put(“1”, TEN);

chineseMoneyPattern.put(“2”, HUNDRED);

chineseMoneyPattern.put(“3”, THOUSAND);

chineseMoneyPattern.put(“4”, TEN_THOUSAND);

chineseMoneyPattern.put(“5”, TEN);

chineseMoneyPattern.put(“6”, HUNDRED);

chineseMoneyPattern.put(“7”, THOUSAND);

chineseMoneyPattern.put(“8”, HUNDRED_MILLION);

}

public synchronized static SimpleMoneyFormat getInstance() {

if (formatter == null)

formatter = new SimpleMoneyFormat();

return formatter;

}

public String format(String moneyStr) {

checkPrecision(moneyStr);

String result;

result = convertToChineseNumber(moneyStr);

result = addUnitsToChineseMoneyString(result);

return result;

}

public String format(double moneyDouble) {

return format(numberFormat.format(moneyDouble));

}

public String format(int moneyInt) {

return format(numberFormat.format(moneyInt));

}

public String format(long moneyLong) {

return format(numberFormat.format(moneyLong));

}

public String format(Number moneyNum) {

return format(numberFormat.format(moneyNum));

}

private String convertToChineseNumber(String moneyStr) {

String result;

StringBuffer cMoneyStringBuffer = new StringBuffer();

for (int i = 0; i < moneyStr.length(); i++) {//123363

cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(

i, i + 1)));

}

// 拾佰仟万亿等都是汉字里面才有的单位,加上它们

int indexOfDot = cMoneyStringBuffer.indexOf(DOT);

int moneyPatternCursor = 1;

for (int i = indexOfDot - 1; i >0; i--) {

cMoneyStringBuffer.(i, chineseMoneyPattern.get(EMPTY

+ moneyPatternCursor));

moneyPatternCursor = moneyPatternCursor == 8 ? 1

: moneyPatternCursor + 1;

}

String fractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer

.indexOf(“.”));

cMoneyStringBuffer.(cMoneyStringBuffer.indexOf(“.”),

cMoneyStringBuffer.length());

while (cMoneyStringBuffer.indexOf(“零拾”) != -1) {//inclusive. exclusive.

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零拾”),

cMoneyStringBuffer.indexOf(“零拾”) + 2, ZERO);

}

while (cMoneyStringBuffer.indexOf(“零佰”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零佰”),

cMoneyStringBuffer.indexOf(“零佰”) + 2, ZERO);

}

while (cMoneyStringBuffer.indexOf(“零仟”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零仟”),

cMoneyStringBuffer.indexOf(“零仟”) + 2, ZERO);

}

while (cMoneyStringBuffer.indexOf(“零万”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零万”),

cMoneyStringBuffer.indexOf(“零万”) + 2, TEN_THOUSAND);

}

while (cMoneyStringBuffer.indexOf(“零亿”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零亿”),

cMoneyStringBuffer.indexOf(“零亿”) + 2, HUNDRED_MILLION);

}

while (cMoneyStringBuffer.indexOf(“零零”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零零”),

cMoneyStringBuffer.indexOf(“零零”) + 2, ZERO);

}

if (cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1)

cMoneyStringBuffer.(cMoneyStringBuffer.length() - 1,

cMoneyStringBuffer.length());

cMoneyStringBuffer.append(fractionPart);

result = cMoneyStringBuffer.toString();

return result;

}

private String addUnitsToChineseMoneyString(String moneyStr) {

String result;

StringBuffer cMoneyStringBuffer = new StringBuffer(moneyStr);

int indexOfDot = cMoneyStringBuffer.indexOf(DOT);

cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1, YUAN);

cMoneyStringBuffer.(cMoneyStringBuffer.length() - 1, JIAO);

cMoneyStringBuffer.(cMoneyStringBuffer.length(), FEN);

if (cMoneyStringBuffer.indexOf(“零角零分”) != -1)// 没有零头,加整

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零角零分”),

cMoneyStringBuffer.length(), “整”);

else if (cMoneyStringBuffer.indexOf(“零分”) != -1)// 没有零分,加整

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零分”),

cMoneyStringBuffer.length(), “整”);

else {

if (cMoneyStringBuffer.indexOf(“零角”) != -1)

cMoneyStringBuffer.(cMoneyStringBuffer.indexOf(“零角”),

cMoneyStringBuffer.indexOf(“零角”) + 2);

// tmpBuffer.append(“整”);

}

result = cMoneyStringBuffer.toString();

return result;

}

private void checkPrecision(String moneyStr) {//5336.53663 10-5-1

int fractionDigits = moneyStr.length() - moneyStr.indexOf(DOT) - 1;

if (fractionDigits >2)

throw new RuntimeException(“金额” + moneyStr + “的小数位多于两位。”); // 精度不能比分低

}

public static void main(String[] args) {

System.out.println(getInstance().format(new Double(8951.11)));

}

}

[java面试编程题]

java基础编程题 篇2

本文是根据自己在教学过程中的经验对面向对象编程思想的教学进行了初探。

1 面向对象编程的教学中常见问题

1.1 学生更易于使用面向过程的方式进行思维

多数院校在讲授JAVA课程之前,都会在前一学期开设C语言课程,通常这也是学生接触的第一门编程语言,而C语言是典型的面向过程的编程语言,学生熟悉了面向过程的程序设计思想,现在突然要其转变思维方式,学生难以接受。

1.2 面向对象中的概念较为抽象

在进行面向对象教学时,一般先接触到的概念是类和对象,这两个概念在现实生活中也经常用到,相对好理解一些,再继续学习面向对象的基本特征时,接触到封装、继承和多态的概念,学生理解起来就比较困难了,还要通过代码把这几个概念表现出来,就更困难了。很多同学都是在这个时候打了退堂鼓,放弃了对JAVA的学习。

1.3 按知识点进行教学的方式不利于学生从整体上认识面向对象的思想

在讲授面向对象的基本特征时,通常都是先讲概念,然后举例进行代码验证,这样的方式第一学生会觉得枯燥,容易失去学习兴趣,第二代码验证通常都是比较单一的,前后例子没有必然的联系,学生没有获得综合性的体验,缺乏对知识点认识的统一。

2 教学目标和教学内容的确定

我们专业借鉴CDIO工程教育理念,提出了JAVA教学的新模式,在此基础上确定了注重实践能力培养的教学大纲,要求该课程紧紧围绕“熟练掌握基础知识和提升实践能力”目标展开教学,对每一单元都提出了知识目标、能力目标和情感目标,本单元的三个目标分别是:

知识目标:掌握类的定义与对象的创建,熟悉构造方法的作用及应用,深入理解面向对象三大特征:封装性、继承性和多态性的Java语言实现。

能力目标:培养学生面向对象的编程能力,培养学生良好的团队合作意识及沟通协调能力,接收新知识的能力,培养学生分析问题、解决问题的能力、创新能力以及逻辑思维能力

情感目标:培养学生学习的兴趣,积极探索未知,不惧失败的精神。

为了达成上述三个目标,确定了以计算图形面积为主的相应教学内容,共需22个学时。

3 教学方法的改进和探讨

3.1 任务驱动教学法

“任务驱动教学法”将以往以传授知识为主的传统教学理念转变为以解决问题、完成任务为主的多维互动式的教学理念,强调学习过程中学习者的主动性、构建性,支持学习者完成任务的自主权和中心地位。换言之,它的核心是让学生学会学习,能进行知识的迁移和运用[1]。

在教学中通过计算图形面积将面向对象的三大特征关联起来。具体教学过程为:先让学生用面向过程的方式求解圆的面积,再转换成面向对象的编程方式,加深对类和对象的理解。通过给半径赋一个负值,提出问题,引出解决方案:封装。当我们要求学生计算其它图形的面积时,又可以引入多态的概念。通过这些小小的任务,学生既理解了概念,又能把知识点贯穿在一起。

3.2 行动导向教学

高等职业教育行动导向教学法就是在基于高等职业环境条件下的行动导向教学法,其更强调职业情境要求突出职业教育专业课程知识的性质和表征适应职业教育学生的学习认知规律,能有效培养职业院校学生技能实践能力,并彰显职业教育魅力,提高职业教育的认可度。正逐步成为职业教育教学界的一种思潮,为国内外的职业教育研究人员和工作人员积极研究并积极推广应用[2]。

我院近几年一直在大力推广行动导向教学,从各系各专业推选出多门示范课,对老师的教学起到了很好的引领作用。我们根据学生情况推出了“快递打印系统”这个项目,并将项目分成6个情境,通过情境将知识点连接起来。通常实施会分为(1)确定项目任务、(2)制定项目计划、(3)实施和(4)检查评估四个步骤[3],在第一步中学生会积极查找熟读资料,了解项目内容和功能,第二步教师按照软件工程方法,要求学生制定项目计划书,教师需要在这个阶段帮助学生控制好进度和难度,第三步实施过程,教师要随时关注学生的困难,指导和鼓励学生自己解决问题,对共性问题进行集中讲解,第四步评价以鼓励和建议为主,提高学生的成就感。

3.3 改变按知识点顺序进行讲解的方式

对任何人而言,无论什么事情,有兴趣才有动力,才会主动去探求,去学习。对学生的学习而言,尤其是。一般Java教学都是按知识点的编排顺序进行讲解的,如讲授java基本数据类型,如果一个个地讲解它们的定义、特点和范围,学生是很难集中注意力的[4]。我们在讲授之前会先演示“快递打印系统”项目,让学生明确课程学习完后可以达到的目标,同时搜集并演示一些java编写的典型小案例,提高学生兴趣。讲解新知识点之前,会先设计好相应情境,并提出问题,学生在解答问题过程中逐步掌握新内容,而不会觉得枯燥。

4 考核评价的督导作用

为了能让学生配合好教学,我们尝试通过过程性评价来帮助督促学生的学习。我们采用了小组学习法,5至6人为一个学习小组,每个小模块完成之后,由一个小组成员代表进行讲解,其他成员可以补充回答,其他小组进行评价,最后老师再综合进行评价。每次评价都记录在册,期末进行综合统计,统计结果作为过程性评价的最终分数,占到该门课程总成绩的60%,由于占比较高,学生在平时也要努力认真才能取得好成绩。另外这种评价方式也锻炼了学生的表达能力和相互协作的能力。

5 结束语

通过教学方法和教学内容的改进尝试,我们取得了初步成效,学生的学习能力和学习兴趣都有了很大的提高,我们还要不断改革创新,提升教学理念,更新教学思路,以达到最佳的教学效果,这是我们努力的目标。

摘要:该文首先分析了在Java教学中遇到的问题,并通过教学方法的改进、考核评价方式的转变,来提高学生的学习效果。从而对提高学生的学习能力,提高学生的学习兴趣进行了有益的探讨。

关键词:JAVA,教学方法,考核评价

参考文献

[1]唐红杰.JAVA语言程序设计之基本语法的教学研究[J].软件,2014,35(6):23-25,29.

[2]江务学.行动导向教学法在java课程教学中的应用探讨[J].现代计算机,2011(4):37-39.

[3]尹元元.行为导向教学在高职java课程中的实践[J].科技教育创新,2008(8):232-233.

JAVA编程习题1 篇3

JAVA编程习题1

4.test10097求两个数的和

/*输入n表示做n次下面的操作: 输入两个正整数,输出它们的和.例: 输入:

//表示n=2,做两次操作 10 11 20 30 输出: sum=21 sum=50 */

5.test20001求两个数的和与差

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

/*程序填空,不要改变与输入输出有关的语句。输入整数a和b,计算并输出a、b的和与差。例: 输入 2-8 输出 The sum is-6 The difference is 10*/

6.test20002求平方根

//程序填空,不要改变与输入输出有关的语句。输入1个实数x,计算并输出其平方根。例: 输入 1.21 输出

The square root of 1.21 is 1.1

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

7.test20003华氏温度转换成摄氏温度

/*程序填空,不要改变与输入输出有关的语句。

输入华氏温度f,计算并输出相应的摄氏温度c。c = 5/9(f-32).例:括号内是说明 输入

17.2(华氏温度)输出

The temprature is-8.****/

8.test20004计算旅途时间

程序填空,不要改变与输入输出有关的语句。

输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。

有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

例:括号内是说明 输入

712 1411(出发时间是7:10,到达时间是14:11)输出

The train journey time is 6 hrs 59 mins.9.test20005数字加密

程序填空,不要改变与输入输出有关的语句。输入1个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。例:括号内是说明 输入 1257 输出

The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

10.test20006大小写字母转换

程序填空,不要改变与输入输出有关的语句。输入一个大写英文字母,输出相应的小写字母。例: 输入 G 输出 g

import java.io.*;public class T20006 {

public static void main(String[] args)throws IOException

{

char ch;

ch=(char)System.in.read();

/*------------------*/

ch=(char)(ch+32);

// 以ASCII码计算

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

}

System.out.println(ch);

} 11.Test20007计算三门课程的平均成绩

程序填空,不要改变与输入输出有关的语句。

已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。本题无输入。输出示例:

math = 87, eng = 72, comp = 93 average = 84

12.test20008计算存款利息

程序填空,不要改变与输入输出有关的语句。输入存款金额 money、存期 year 和年利率 rate,精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。

interest = money(1+rate)^year10 / 2 =

(数字与运算符之间有一空格)输出 5 10 */ /*补充知识:in.next()与in.nextline()的区别

in.next只接受一个字,不能接受一个带有空格的字符串,如下: 例如输入: Show me--(回车)用next()只能得到Show,因为遇到空格表示结束,但是nextline()则要遇到回车才知道结束.可以看一个例子,演示给大家看,如下:----------

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

import java.util.Scanner;public class Test60011{

public static void main(String []args)

{

String s1_1,s1_2,s2;

Scanner in=new Scanner(System.in);

s1_1=in.next();

System.out.println(s1_1);

System.out.println(“----------”);

in.nextLine();// 把剩余的吃掉

s2=in.nextLine();

System.out.println(s2);

System.out.println(“----------”);

s1_1=in.next();

s1_2=in.next();

System.out.println(s1_1+“

”+s1_2);

} }------------*/

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

39.求1+1/2!+……1/N!//求1+1/2!+1/3!+....(用方法求n!)

40.求a+aa+aaa+……(用方法)//求a+aa+aaa+aa…a

41.统计一个整数中数字的个数

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(repeat=3)-21902 2

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

345543 输出:

count=2

(-21902中有2个2)count=1

(有1个2)count=0

(345543中没有2)*/

42.判断素数(用方法)

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

NO

(1不是素数)

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

YES

(2是素数)NO

(9不是素数)YES

(17是素数)

43.统计素数并求和

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。要求定义并调用函数prime(m)判断m是否为素数。例:括号内是说明 输入:

(repeat=3)1 10

(m=1, n=10)20 35(m=20, n=35)14 16(m=14, n=16)输出:

count=4, sum=17

(1到10之间有4个素数:2,3,5,7)count=3, sum=83

(20到35之间有3个素数:23, 29, 31)count=0, sum=0

(14到16之间没有素数)

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

44.输出Fibonacci序列

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

Fibonacci 序列(第1项起):1 1 2 3 5 8 13 21......要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。输出语句:System.out.print(f+“ ”);

例:括号内是说明 输入:

(repeat=3)1 10

(m=1, n=10)20 100(m=20, n=100)1000 6000(m=1000, n=6000)输出: 1 2 3 5 8

(1到10之间的Fibonacci数)21 34 55 89

(20到100之间的Fibonacci数)

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

1597 2584 4181

(1000到6000之间的Fibonacci数)*/

45.求完数

/*输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有完数

(完数就是因子和与它本身相等的数)。

要求定义并调用函数factorsum(number),它的功能是返回number的因子和。

例如,factorsum(12)的返回值是16(1+2+3+4+6)。输出语句:System.out.print(i+“ ”);例:括号内是说明 输入: 2

(repeat=2)20 500(m=100, n=400)1 100

(m=1, n=100)输出: 28 496 1 6 288*/

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

46.求各位数字的立方和等于它本身的数 程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

输出语句:System.out.print(i+“ ”);例:括号内是说明 输入: 2

(repeat=2)100 400(m=100, n=400)1 100

(m=1, n=100)输出:

153 370 371(1*1*1+5*5*5+3*3*3=153;3*3*3+7*7*7=370;3*3*3+7*7*7+1*1*1=371)1

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

47.将一个整数逆序输出

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

要求定义并调用函数reverse(number),它的功能是返回number的逆序数。

例如reverse(12345)的返回值是54321。例:括号内是说明 输入

(repeat=4)123456-100-2 99 输出 654321-1-2 99

48。十进制转换二进制

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat(0

要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。

输出语句:System.out.print(t);

//t为某位二进制数 例:括号内是说明 输入: 3

(repeat=3)15 100 0 输出: 1111 1100100 0

49。求平均值

程序填空,不要改变与输入输出有关的语句。

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

输入一个正整数repeat(0

(repeat=2)3 1 2-6 5 12 2 5 4 0 输出 aver=-1.0 aver=4.6

50。求最大值及其下标

/*输入一个正整数n(1

(设最大值惟一,下标从0开始)。例:括号内是说明 输入

(repeat=3)3 1 6 4 3 10 8 1 5 1 2 5 4 0

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

输出

max=6,index=1

(最大值6的下标是1)max=10,index=0

(最大值10的下标是0)max=5,index=2

(最大值5的下标是2)*/

51。逆序输出

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(repeat=2)4 10 8 1 2 5 1 2 5 4 0 输出 2 1 8 10 0 4 5 2 1

52。交换最小值和最大值

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

最大值与最后一个数交换,然后输出交换后的n个数。例:括号内是说明 输入

(repeat=3)5 4 3 5 1 2 4 1 5 6 7 5 5 4 3 2 1 输出 1 3 2 4 5 1 5 6 7 1 4 3 2 5 53。排序

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(repeat=3)4 5 1 7 6 3 1 2 3 5 5 4 3 2 1

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

输出 7 6 5 1 3 2 1 5 4 3 2 1

54。矩阵运算

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(2+3+4+5+6+7+8=35)

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

55。加法口诀表

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(repeat=1)3

(n=3)输出: +

56。判断上三角函数

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(上三角矩阵,即主对角线以下的元素都为0, 主对角线为从矩阵的左

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

上角至右下角的连线)例:括号内是说明 输入:

(repeat=2)3 1 2 3

0 4 5 0 0 6(n=3)2 1 0-8 2

(n=2)输出: YES NO

57。求矩阵每行元素之和

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(repeat=1)3 2(m=3, n=2)6 3 1-8

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 12 输出: sum of row 0 is 9 sum of row 1 is-7 sum of row 2 is 15

58。找鞍点

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

(repeat=2)4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9(n=4)2 1 7 4 1

(n=2)输出: a[2][1]=6 NO

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

59。求字符串长度

程序填空,不要改变与输入输出有关的语句。连续输入一批以 # 结束的多串字符。统计并输出每串字符的长度。输出使用:System.out.println(len);例:括号内是说明 输入:

hello 12#abc+0#

(连续输入2串字符“hello 12”和“abc+0”)输出:

(“hello 12”的长度是8)5

(“abc+0”的长度是5)

60。统计大写辅音字母

程序填空,不要改变与输入输出有关的语句。输入一个正整数n(0

输入一行字符串,统计并输出字符串中大写辅音字母的个数(大写辅音字母:除“A”,“E”,“I”,“O”,“U”以外的大写字母)。例:括号内是说明 输入:

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

(输入3个字符串)HELLO IT12 uieiaba 输出:

(“HELLO”中有3个大写辅音字母)1

(“IT12”中有1个大写辅音字母)

0

(“uieiaba”中没有大写辅音字母)

61。查找字符

程序填空,不要改变与输入输出有关的语句。

先输入一个字符ch。然后输入一个正整数n(0

输入一行字符串,在字符串中查找该字符(ch),如果找到,则输出 该字符在字符串中最后出现的位置(从0开始);否则输出“Not Found”。例:括号内是说明 输入:

m

(输入一个字符)3

(要输入3行字符串)moon

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

programming 1234

输出:

0

(m在“moon”中最后出现位置是0)7

(m在“programming”中最后出现位置是7)Not Found

(“1234”中没有m)

62。字符串替换

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

对应字母

A ──→ Z

B ──→ Y

C ──→ X

D ──→ W

……

X ──→ C

Y ──→ B

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

Z ──→ A 例:括号内是说明 输入:

(输入3行字符串)A flag of USA IT12 oueiaba 输出: Z flag of FHZ RG12 oueiaba

63。十六进制转换十进制

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

个新字符串(十六进制形式),然后将其转换为十进制数后输出。例:括号内是说明 输入:

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

(输入3行字符串)10 Pf4+1-+A

输出: 16 3905 10

-----------------------

精心收集

精心编辑

精致阅读

java编程思想读书笔记 篇4

万物皆对象,抽取待求解问题的任何概念化构件,将其表示为程序中的对象

程序是对象的集合,他们通过发送消息来告知彼此所要做的

每个对象都有自己的由其他对象所构成的存储,创建包含所有对象的包的方式来创建新类型的对象

每个对象都拥有其类型

某一特定类型的所有对象都可以接收同样的消息

1。java还有个“缺省”的访问权限,如果你没用public、protected、private的话,那就是指它了。通常把它称为package访问权限。因为同属这个package的类可以访问这个package中其它类的“缺省”权限的成员,但是出了这个package,它们就都是private的了。

2。多态性,处理类系的时候,通常你不用把它当作某个具体的类型,只要把它当作基类对象就可以了,即把泛型的基类当作派生类来用。非oop的编译器的做法是前绑定,即编译器会产生那个名字的函数调用,而连接器负责将这个调用解析成须执行的代码的绝对地址。oop的编译器用了后绑定,即当你向某个对象送了一个消息后,不到运行时,系统不能确定到底调用哪段代码。java用存储在对象中的信息来计算方法的地址,因此每个对象的运行都会不同。后绑定是java的缺省行为,c++中必须用virtual声明。

3。abstract关键词声明类为抽象类,编译器会阻止任何人创建abstract类的对象,而只是把其派生类的对象上传给它。abstract也可以声明方法,表示这个类所派生的所有类都有这个方法,但是它的实现不在这里。abstract方法只能存在于abstract类中。

4。interface关键词是对abstract类的概念的深化,它不允许你实现任何方法,只作为接口使用.可以继承多个接口,java中无类多重继承。

5。c++支持的变量有自动、静态、寄存器和堆,java只支持堆变量,每次创建对象的时候都要用new来动态分配堆内存。

6。容器和迭代器:容器:c++标准模板类库stl = java标准类库的容器类,迭代器:将基于不同数据结构的容器抽象为一个简单线性序列的类。

7。java是单根继承体系,object作为最终基类使所有对象都具有某些基本操作。单根继承和系统通过reference操控对象,使垃圾回收器可以释放堆内存。

8。java容器只持有object对象,单根继承使它能持有任何对象上传只要把对象的reference直接放入即可,取对象时,必须知道它原有的类型,从容器中取出对象的reference然后强制转换为原因类型(下传:由基类到其派生类)。

9。参数化类型:能够根据需要由编译器自动指派类型的类,c++的模板template即参数化类型。java暂不支持

10。异常是一种能从错误发生的地方被抛出的对象,并被能解决这类问题的异常处理程序所捕获,异常肯定能得到处理,并且能够从错误状态下恢复。java的异常处理是从底层开始的,而且还不能不用,否则就不能编译通过。

11。java语音内置了多线程支持,线程被表示为对象,java还有一定的资源锁定功能,可以通过synchronized关键字锁定对象内存。

12。持久性:java可以通过对象的序列化或java数据对象来实现把对象从磁盘中存储和提取。

13。传统w/s:浏览器上送web服务器的数据由web服务器上的通用网关接口程序CGI处理,常用语言perl、python、C++等。

14。客户端编程:插件:可以为浏览器添加新的功能,甚至创造新的客户端编程语言。脚本语言:把客户端的源代码直接嵌入到html页面中,html页面显示的时候自动激活插件解释这些程序。常用脚本语言javascript、vbscript、tcl/tk等。java:可以通过applet和java web start进行客户端编,applet是一个只能运行在web浏览器里的小程序,applet是被编译过的代码,作为web页面的一部分自动下载,在被激活的时候开始运行。java web start分发在web浏览器外运行的独立程序。Activex操作上不受限制。

Java_JDBC编程总结 篇5

以自己去写--如果你很牛!

二、JDBC编程的步骤

为了说明这个步骤,假设你要通过java程序执行一个sql查询,你需要按照如下的步骤去走:

1、创建指定数据库的URL 这个URL实际上还是统一资源定位器,里面包含了一些连接数据库的信息:数据库类型、端口、驱动类型、连接方式、数据库服务器的ip(或名字)、数据库名(有的是别名)等。其格

式如下:

jdbc:subProtocol:subName://DBserverIP:port/DatabaseName 例如mysql的一个url:jdbc:mysql://192.168.3.143:3306/zfvims

2、加载驱动类到JVM内存区域中

有两种方法:

一种是用Class.forName()方法加载指定的驱动程序。

一种是将驱动程序添加到java.lang.System的属性jdbc.drivers中。

最后说明一点,有时候添加到系统的CLASSPATH环境变量是不行的,原因是在使用JDBC接口

操作数据库前,JVM还没有加载上驱动。Class.forName(“com.mysql.jdbc.Driver”)

3、、通过DriverManager类管理驱动、创建数据库连接。

DriverManager类作用于程序员和JDBC驱动程序之间,提供注册管理驱动建立连接细节等方法,它所有成员均为静态的。通过其getConnection方法会创建一个JDBC Connection对象。

Connection conn=DriverManager.registerDriver(“jdbc:mysql://192.168.3.143:3306/zfvims”,“lava

soft”,“password”);

4、Connection类--数据库连接

这里所说的Connection类实际上是实现了JDBC的Connection接口的类,这个类一般都是jdbc驱动程序实现了。Connection类表示了数据库连接,通过其对象可以获取一个获取数据库和表等数据库对象的详细信息。但更多的是通过这个连接更进一步去向数据库发送SQL语

句去执行,下面会讲到。

数据库的连接的建立是很耗费资源和时间的,因此在不用连接的情况下要通过其close()方

法将连接关闭,以释放系统资源。

5、Statement类--发送并执行(静态)SQL语句

通过Connection对象的createStatement()方法可以创建一个Statement对象,通过该对象的方法可以(发送)并执行一个静态sql语句。如果要执行动态的sql(sql串中有参数),那么就用PreparedStatement类,用法和Statement类似。

Statement stmt=con.createStatement()

6、ResultSet类--结果集

当你执行一条sql查询后,就会产生一个查询结果。ResultSet就表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet 对象具有指向其当前数据行的指针。通过ResultSet对象不但可以结果集数据,还可以获取结果集表的列名、数据类型等信息。

ResultSet rs=stmt.executeQuery(sql)

7、关闭数据库连接

当对sql操作完成后,应该关闭数据库连接,这样避免因为连接未关闭而耗费系统资源,如果每次都不关闭,多次操作将建立多个连接,最终数据库连接会达到最大限度,或者耗尽系统的资源,从而导致应用崩溃。因此要注意关闭资源,尤其是数据库连接。

三、JDBC编程最基本的实例

下面通过一个执行一条简单的MySQL查询来说名上面的JDBC编程的一般方法和步骤。

public

class TestJDBC(){

1.public

static Connection getConnectionByJDBC(){ Connection conn =

null;2.try { //装载驱动类

3.Class.forName(“com.mysql.jdbc.Driver”);} catch

(ClassNotFoundException e){ 4.System.out.println(“装载驱动异

常!”);e.printStackTrace();

5.}

try { 6.//建立JDBC连接

conn = DriverManager.getConnection(“"jdbc:mysql://192.168.3.143:3306/zfvims

”,“lavasoft”,“password”);

7.} catch(SQLException e){ System.out.println(“

链接数据库异常!”);8.e.printStackTrace();}

9.return conn;}

10.public

static String test(){ 11.String sqlx = “select t.code,t.name from province t order by

t.code asc”;

try { 12.//创建一个JDBC声明

Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

13.//执行查询

ResultSet = stmt.executeQuery(sqlx);

14.while(rs.next()){ String code =

rs.getString(“code”);

15.String name = rs.getString(“name”);System.out.println(code+name)

;16.} } catch(SQLException e){ 17.System.out.println(e.getMessage());e.print

StackTrace();

18.} finally { //预防性关闭连接(避免异常发生时在try语句块关闭连接没有执行)

19.try {

if(conn!= null)conn.close();20.} catch(SQLException e){ System.out.println(e.getMessage());21.e.printStackTrace();}

22.} }

23.public static

void main(String args[]){ new TestJDBC().test();

24.}

25.}

四、JDBC编程的陷阱

1、conn一定要在finally语句块进行关闭。

2、Statement、ResultSet尽可能缩小其变量作用域。

3、Statement可以使用多次,定义多个。一个Statement对象只和一个ResultSet对象关联,并且是最后一次查询。

Java面向对象编程的教学思路 篇6

关键词:Java,面向对象编程,教学方法

Java是当前最流行的编程语言之一, 几乎所有的计算机专业学生都要学。通常, 学生先接触的编程语言是C语言, 而Java在语法上又与C语言非常类似, 因此, 教学的重点应放在面向对象编程的概念和技术上, 然而, 在刚接触面向对象编程时, 学生一般都很难理解OOP的概念。原因是教师过分强调Java语言规范, 却没有告诉学生OOP编程的理念和原则。这极大地挫伤了学生学习的兴趣, 更谈不上对能力的培养。因此, 笔者认为教学重点应放在介绍面向对象编程的基本思想以及Java语言与此相关的特征上。

1 Java编程基础

(1) 简单的Java应用程序;课程开始时, 教师应演示简单示例让学生了解Java程序。由于学生熟悉C语言, 示例应与其类似, 使学生快速地了解Java编程。将“Hello World”程序作为第一个示例使用, 学生就很容易了解Java程序和C程序之间的异同点。

(2) 简单的数据类型和数组;Java的语法类似于C语言, 这对于熟悉C的学生有利有弊。学生要区分C和Java语法和句法上的差异, 教师也必须提醒学生两者只是类似, 如两者的布尔类型和数组类型就很容易混淆。

(1) 布尔类型:C语言中, 经常会使用1和0来表示真假, 而Java使用布尔变量来表示。因此, while (1) 在C语言中是合法的, 在Java里就不是了, 这是Java初学者常见的一种错误。

(2) 数组类型:数组在Java中被视为对象。教师可以将数组作为第一个例子来演示如何使用Java对象, 但需要强调数组对象必须先声明后使用, 而C语言数组是可以先使用后声明的。

(3) 使用预定义的Java类。

教学目标:

*让学生学会使用Java类库中强大的预定义类;

*引入Java中一些重要的概念和技术, 如构造函数、对象、方法重载等。

讲解中, 笔者选择了两种典型的类: (1) String类:String类或类型几乎在任何编程语言中都会用到。Java也提供了该类, 教师可通过例子来演示调用构造函数创建String对象, 调用实例方法, 访问成员变量等等。 (2) Math类:学生经常会用到C语言的数学函数, 在Java中, 他们同样也要用到这些功能。为此, Java提供了Math类。由于Math类所有的成员都是静态的, 教师可以通过例子来说明静态方法的调用, 类静态成员的访问, 方法重载等等。

2 定义类

(1) 从C结构到Java类;带有实例变量的Java类和C语言的结构类型非常类似, 但是, 两者虽然在形式上类似, 性质却完全不同。例1中, 变量id是创建Rectangle对象的序号, 静态成员变量next Id用于跟踪创建的对象, 即每创建一个对象, next Id值将加1。

例1.class Rectangle{

double length, width;

int id;

如果消除静态变量, Rectangle类就非常类似于C结构。不过, 两者的区别也显而易见。首先, 类通过调用构造函数创建新对象, 而C结构没有构造函数。其次, 类的静态成员变量在对象创建之前就初始化, 由该类的所有对象所共享, 而C结构没有此功能。在这, 需要通过例子向学生说明实例变量和类变量之间的区别, 以及它们的使用。

(2) 定义构造函数。

构造函数的作用是创建对象并初始化。不过, 学生可能认为没有必要为类提供构造函数, 他们可以用例2来创建新对象:

在此, 教师可展开写构造函数的原因:如果没有自定义的构造函数, 那么创建一个新对象必须要写五条语句。比如, 用户要创建1000个对象, 就不得不写5000条语句。而如果提供了构造函数, 就只需1000条调用构造函数的语句。这是简化代码的一种方法, 同时也反映了简单实用的编程理念。在此可提醒学生在平时注意消除重复代码, 它的好处是: (1) 避免多次调试同样的代码; (2) 简化程序, 使程序清楚且便于阅读。

(3) 定义方法。

Java中有两种成员方法:类方法和实例方法。它们的区别:类方法可由类中的任何成员方法调用, 但是类方法不能直接调用任何实例方法。笔者教学发现, 不少学生不愿意使用成员方法, 教师就必须点出编写成员方法的理由: (1) 消除重复代码, (2) 隐藏程序执行细节, 使程序更安全。

(4) 访问控制符与封装。

Java对方法有public、private、protected、private protected四个访问控制符, 教师可分别用例子来说明这四个访问级别的区别。另外, 教师还必须向学生充分解释控制访问的理由。例如, 如果Rectangle类的长度和宽度都是public访问级别, 变量值可以自由修改。因此, 输入的值就有负值的危险。如果其访问级别是private, 别的类就看不到两个变量, 它们只能由同一类的成员来进行修改。另外, 还要编写方法来核实数据合法性后再将其赋给成员变量, 以保护成员变量, 避免非法操作。只有让学生了解了控制访问的原因, 他们才能更积极主动地来学习有关访问控制的内容。

3 结语

回顾以上讨论的教学思路。开始, 我们让学生写一个类似C程序的Java程序。这个阶段的重点是使学生熟悉Java语言的一些重要概念。接着, 讨论了如何定义类, 在这一阶段, 我们强调了构造函数的优势, 类方法和控制访问的原因, 并将面对对象编程的思想贯穿始末。

根据这条思路, 逐步讲授面向对象编程的概念和原则。我们不止要告诉学生怎么做, 更要告诉他们为什么这样做。只有这样, 学生才会更积极地学习Java以及潜在的面向对象编程思想, 并逐渐突破从面向过程编程到面向对象编程的障碍。

参考文献

[1]B.Joshua, Effective Java[J].Addison-Wesley, 2001.

[2]Bruce Eckel[著], 陈昊鹏[译], Java编程思想[M].机械工业出版社, 2007.

[3]林信良.Java学习笔记[M].清华大学出版社, 2007.

上一篇:年竞聘团委副书记演讲稿下一篇:春季期099班班主任工作计划