jav小问题,请前辈指点哈

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jav小问题,请前辈指点哈相关的知识,希望对你有一定的参考价值。

public class ReadLine

public static void main(String[] args)


byte [] buf = new byte[1024];
String strInfo = null;
int pos = 0;
int ch = 0;
System.out.println("please entrer:");
while(true)

try

ch = System.in.read();

catch(Exception e)

System.out.println(e.getMessage());

switch(ch)

case'\r':
break;
case'\n':
strInfo = new String(buf,0,pos);
if(strInfo.equalsIgnoreCase("bye"))

return;

else

System.out.println(strInfo);
pos = 0;
break;

default:
buf[pos++] = (byte)ch;





这里的ch可不可以用直接用Byte类型;
还有switch这个语句块可不可以详细分析一下他的操作过程,是怎么运作的。谢谢
就是
case'\r':
break;
case'\n':这个事怎么回事,是怎么运作的

ch 不可以用byte 类型的, 因为如果System.in.read() 获取的是int 型, 比byte 的范围大, 除非强制转换, 否则不能转换成为byte.

如果你的读取方式不用System.in.read(), 而是用Scanner 的话, 就可以直接读取byte, Scanner in = new Scanner(System.in);
byte ch = in.nextByte();

switch 语句就和if else if 差不多, 它判断你switch()中的值, 和下面case 中的值以不一样, 如果一样, 就执行case后面的代码, 所以如果你不用break 的话, 就继续执行下面的case 语句, 注意case 只有效一次, 也就是说, 一旦case 的值和switch的是一样的, 那么下面的case 都不会判断了, 举个例子:
int i = 2;
switch (2)
case 1:
System.out.println(1);
case 2:
System.out.println(2);
case 3:
System.out.println(3);
break;
case 4:
System.out.println(4);


那么显示的结果就是
2
3
参考技术A switch接受的最大类型是int,比int大的就不行了,比如long。float,比int小的byte,short,char都可以,这里大类型的意思就是在内存里占的位数比较int长。
另外enum型的也可以。Byte型经过java1.5版本以上反包装应该也可以,1.4就不行了。

switch执行就是一个case一个case找,找到符合条件的就不再比较了,只要不遇到break就一直执行下去,所以如果忘写break可能在第一个条件符合以后所有的代码都会执行
参考技术B 第一ch可用byte类型 .但 因为在System.in.read();时返回的是一个int.你用int就直接搞定.若用byte时我看还需要进一步的转化.还不如用int来的简单.所以推荐用int而不是其他类型.
第二.switch就是if的另外一种实现

p.s 楼上正解........
就是当为\r时接着运行.当为\n开始判断你输入的是什么东东.要是bye时就退出.
要不就打印东东.
\r应该是空格
\n应该是换行

装饰设计模式(C#)求知,请前辈们指点,万分感谢

public interface component

void sampleoperation();

public class decorator : component

private component component;
public decorator(component component)

this.component=component;

public virtual void sampleoperation()


component.sampleoperation();


public class concretecomponent : component

public void sampleoperation()

console.writeline ("concretecomponent sampleoperation");


public class concretedecorator1 : decorator

public concretedecorator1(component component):base(component)


override public void sampleoperation()

base.sampleoperation ();
console.writeline ("concretedecorator1 sampleoperation");


public class concretedecorator2 : decorator

public concretedecorator2 (component component):base(component)


override public void sampleoperation()

base.sampleoperation ();
console.writeline ("concretedecorator2 sampleoperation");


static void main(string[] args)


component component=new concretecomponent ();
component concretedecorator1=new concretedecorator1 (component);
component concretedecorator2=new concretedecorator2 (concretedecorator1);
concretedecorator2.sampleoperation ();

以上的程序是装饰设计模式的简单代码,熟悉设计模式的人可能都是小儿科了,我就是太笨了,看了好久也没研究明白,知道怎么用了,但是还是不太懂什么时候用!在在这里我请教高手2个问题,有路过的希望能指点迷津,让我也学会这个模式!
问题1:component component=new concretecomponent ();
component concretedecorator1=new concretedecorator1 (component);
component concretedecorator2=new concretedecorator2 (concretedecorator1);
这个过程是怎么回事?decorator类里有了包含了一个component对象这个就的包装了,有经验的前辈如果有时间能不能给我指点一下,最好是个推导的过程
问题2:每一个sampleoperation都包含一个base.sampleoperation ();最后还装饰完就只调用一次而已,也就是执行一次base.sampleoperation ()动作,这个是怎么做到的!
===就是以上两个问题,肯能是我第一个问题没弄明白,第二个也搞不懂,现在我是能用这个模式了,但是还是没彻底的从原理上搞明白,我这个人从小就笨,别人很容易弄懂的东西我得弄好久!我提的问题可能让前辈们感觉很好笑,因为我是个初学者刚刚开始看着方面的东西,我也比较好转牛角尖,我就15分,都给帮助我的前辈,请不要嫌少!万分感谢!

代码太多了看不过来。
装饰模式可以理解为穿衣服,“人”在那里摆着,怎么穿衣服,什么顺序穿衣服,都算是一种“装饰”,如果你要上班,先穿内裤后穿西服。如果你是超人,先穿西服后穿内裤。
换句话说,什么顺序都可以,由你自定义来“装饰”,而并不依赖于你的“人”

只是一个理解思路,希望对你有帮助吧
参考技术A 简单给你说下装饰者模式吧,希望对你理解有帮助.
装饰者模式主要是通过继承来扩展新的行为.
首先它分为装饰者和被装饰者,比如说计算方法调用的次数,事例如下:
public interface jiekou

int Number();

public class beizhuangshizhe:jiekou

public int Number()

return 1;///很显然被装饰者无法实现计算


public class zhuangshizhe:jiekou

jiekou jk;///把被装饰者做参数
public zhuangshizhe(jiekou beizhuangshizhe)

this.jk=beizhuangshizhe;

public int Number()

return jk.Number()+1;///通过装饰者实现计算


static void main(string[] args)

jiekou jk=new beizhuangshizhe();///他们继承同一接口,可以通过接口调用
jk=new zhuangshizhe(jk);
jk=new zhuangshuzhe(jk);///装饰者也可以做被装饰者
jk.Number();

希望在思想上对你有帮助
参考技术B 这个我也知道,我现在就是装饰类的执行过程分析不明白,所以才这问的!这程序就是个框架而已,不复杂,装饰类这个过程细节没弄明白!希望前辈们给我指点!

以上是关于jav小问题,请前辈指点哈的主要内容,如果未能解决你的问题,请参考以下文章

JAVA里面的boolean类型怎么转成int型 请各位前辈给予指点

关于研究生道路该如何走下去,请前辈们多多指点~

java 已经httpclient获取pdf代码,如何把他pdf文件保存到本机,请前辈指点

用python写了一个检索人名的小程序,但不知道如何使程序与用wxPython写的GUI相联系,程序如下,望前辈指点

keil错误:error c129: missing ';' before 'unsigned' 程序怎么修改还是编译不了,请各位前辈指点,谢谢

毕业一年不到,做Android开发现在我很迷茫?求前辈指点