下面的程序将打印一个单词,其第一个字母是由一个随机数生成器来选择的。请描述该程序的行为:
import java.util.Random;
public class Rhymes {
private static Random rnd = new Random();
public static void main(String[] args) {
StringBuffer word = null;
switch(rnd.nextInt(2)) {
case 1: word = new StringBuffer('P');
case 2: word = new StringBuffer('G');
default: word = new StringBuffer('M');
}
word.append('a');
word.append('i');
word.append('n');
System.out.println(word);
}
}
乍一看,这个程序可能会在一次又一次的运行中,以相等的概率打印出Pain,Gain或 Main。看起来该程序会根据随机数生成器所选取的值来选择单词的第一个字母:0选M,1选P,2选G。谜题的题目也许已经给你提供了线索,它实际上既不会打印Pain,也不会打印Gain。也许更令人吃惊的是,它也不会打印Main,并且它的行为不会在一次又一次的运行中发生变化,它总是在打印ain。
有三个bug凑到一起引发了这种行为。你完全没有发现它们吗?第一个bug是所选取的随机数使得swit ......
如何用JAVA 对象?
写简单下给我看下 谢谢了
创建类 名字 =new 设String 几个都可以。 在用复制 输出
在下面继续创建类 后面最好标注上//这样看起来简单下谢谢了
求解决 类和对象没学明白老师讲的我糊涂 迷糊做不出来。 ......
不用不知道,一用才知道这两者是不大一样的,像在java中,是直接使用 ,如 str1.replace("$","*") 把$号变成*号
但在javascript就不一样,要实现上面的功能是这样写: str.replace(/&/g,"*") 其中的g是参数,说明要将全部的$都变成*
下面把javascript的粘贴在下面:
定义和用法
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法
stringObject.replace(regexp,replacement)
参数描述
regexp
必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
replacement
必需。一个字符串值。规定了替换文本或生成替换文本的函数。
返回值
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
说明
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
replacement 可以是字符串 ......
不用不知道,一用才知道这两者是不大一样的,像在java中,是直接使用 ,如 str1.replace("$","*") 把$号变成*号
但在javascript就不一样,要实现上面的功能是这样写: str.replace(/&/g,"*") 其中的g是参数,说明要将全部的$都变成*
下面把javascript的粘贴在下面:
定义和用法
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法
stringObject.replace(regexp,replacement)
参数描述
regexp
必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
replacement
必需。一个字符串值。规定了替换文本或生成替换文本的函数。
返回值
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
说明
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
replacement 可以是字符串 ......
如何用JAVA 对象?
写简单下给我看下 谢谢了
创建类 名字 =new 设String 几个都可以。 在用复制 输出
在下面继续创建类 后面最好标注上//这样看起来简单下谢谢了
求解决 类和对象没学明白老师讲的我糊涂 迷糊做不出来。 ......
java中的事件机制的参与者有3种角色:
1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中
2.event source:具体的事件源,比如说,你点击一个button,那么button就是event source,要想使button对某些事件进行响应,你就需要注册特定的listener。
3.event listener:具体的对监听的事件类,当它监听到event object产生的时候,它就调用相应的方法,进行处理。
先看看jdk提供的event包:
public interface EventListener:所有事件侦听器接口必须扩展的标记接口。
public class EventObject extends Object implements Serializable
所有事件状态对象都将从其派生的根类。 所有 Event 在构造时都引用了对象 "source",在逻辑上认为该对象是最初发生有关 Event 的对象。
在Java2处理事件时,没有采用dispatchEvent()-postEvent()-handleEvent()方式,采用了监听器类,每个事件类都有相关联的监听器接口。事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的。
对每个明确的事件的发生,都相应地定义一个明确的Java方法。这些方法都集中定义在事件监听者(EventListener)接口中,这个接口要继 ......
新手感悟……
就个人理解,java中分为基本数据类型还有对象。对于基本数据类型。在赋值操作中传递的是值,而不是引用。例如
int a = 10;
int b = a;
int b = 11;
这时,输出a,b可以发现。a = 10 ,b = 11;在b = a这个赋值操作中,是将a对应的值传递给了b。而不是将b的引用指向了a的。当然,问题来了。这里说,a与b在赋值操作后并不是指向相同的内存地址。那为什么会存在 a == b 为真的情况呢?这里的话,应该是在内存中有一部分空间来单独存放了java中的基本数据类型值。当有类似于int I = 10;的赋值操作的时候,指向的对10在内存中地址的。所以a,b是指向相同的内存地址的。
关于String,是个很奇怪的对象。我们可以通过下面的代码发现:
String a = "111";
String b = new String("111");
System.out.println(a == b);
System.out.println(a.equals(b));
a = b;
String c = new ......