|(z-1)/(z+1)|>agt是什么意思

)《数字信号处理》A卷答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
)《数字信号处理》A卷答案
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢中石华东《C语言》2012年秋学期在线作业(一)(第1次)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
中石华东《C语言》2012年秋学期在线作业(一)(第1次)
上传于||暂无简介
你可能喜欢【水星】1/1^2+1/2^2+1/3^2+..+1/n^2+..的22种解法_数学吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:385,027贴子:
【水星】1/1^2+1/2^2+1/3^2+..+1/n^2+..的22种解法收藏
本来是想发到这里的,但是贴吧的Latex排版实在是太dt了,所以就传一个链接了,到我的博客,欢迎大家来访!
一下就沉了
如何计算这个问题是在1644年由意大利数学家蒙哥利(Pietro Mengoli)提出的,而大数学家欧拉于1735年第一次解决了这个问题。他得出著名的结果:解决这个问题的方法在近代不断涌现。这里我从各处摘抄到一些方法,列举在此,仅供大家参考。如有错误,请向我指出,谢谢首先,我们需要知道这个问题的等价形式,将这个数列除以4,我们自然得到从而我们只需证明而以下某些证明会用到这一点
证明1:欧拉的证明欧拉的证明是十分聪明的。他只是将幂级数同有限的多项式联系到了一起,就得到了答案。首先注意到从而但是sin(x)/x的根集为故我们可以假定(PS:欧拉似乎没有证明这个无穷积,直到100年后魏尔斯特拉斯得到了他著名的“魏尔斯特拉斯分解定理”(Weierstrass factorization theorem,详情可见wiki相应条目)。利用这个方法得到函数时要特别小心,我以前看到的一个反例()就可以说明这个问题)从而我们对这个无穷乘积的x^2项进行研究,可以知道所以就有了答案
证明2:一个初等的证明以下证明第一次来自Ioannis Papadimitriou于1973年在American Math Monthly 80(4):424-425页发表的。Apostol在同一份杂志425-430发表了用这个方法计算ζ(2n)的方法这似乎是这个问题最“初等”的一个证明了,只需要知道三角函数相应知识就能够完成。我们先证明一个恒等式:Lemma:令则证明:由于很显然,令n=2m+1,我们有为多项式的根。从而利用韦达定理我们就完成了引理的证明。由于三角不等式sinx&x&tanx在(0,pi/2)成立,我们有,对于w[m],2w[m]..代入有所以应用上面引理,就可以得到令m趋于无穷大,结论自然就成立了。
证明3:数学分析的证明这个证明来自Apostol在1983年的“Mathematical Intelligencer”,只需要简单的高数知识。注意到恒等式利用单调收敛定理(Monotone Convergence Theorem),立即得到通过换元(u,v)=((x+y)/2,(y-x)/2),就有S为点(0,0),(1/2,-1/2),(1,0),(1/2,1/2)构成的正方形,由正方形对称性有利用恒等式arctan(u/sqrt(1-u^2))=arcsinu,arctan((1-u)/sqrt(1-u^2))=pi/4-(1/2)arcsinu得到
证明4:数学分析的证明(Calabi, Beukers & Kock.)同样利用上一问的结论,不过这次我们计算的是:做代换从而有雅可比行列式即为从而其中也就是等式成立!
证明5:复分析的证明这个证明在很多复分析书上都有。我们同样可以利用留数计算该结果,考虑,积分路径P[n]为在中心为原点的长形如图实轴交点为±(n+1/2),复轴交点为±n,若z=x+iy,就有,从而很容易就能知道|cot(πz)|&2对每根积分曲线成立,于此同时,|z|&=n成立,就有成立,在n区域无穷大,该函数趋于0而每一点的留数,计算有就可以得到
证明6:复数积分的证明本证明由Dennis C.Russell给出。考虑积分 利用cos的欧拉公式,也就是就有积分得知再利用ln(1+x)的泰勒展开从而积分就有但e^(i*pi)=-1,变为故如前面式子有由于左边是实数,右边是纯虚数,从而只能两边都为0,即这还给了我们一个副产品,就是
证明7:泰勒公式证明(Boo Rim Choe 在1987 American Mathematical Monthly上发表)利用反三角函数arcsinx的泰勒展开,对于|x|&=1成立,令x=sint有(1)对|t|&=pi/2成立,但是由于积分所以在(1)两边积分就有证毕
证明8:复分析证明PS:个人这个证明感觉相当漂亮,基本没怎么算(T. Marshall 在American Math Monthly,2010)对于令这个和是对于每一个log的分支加起来,在D中的所有点,存在领域使得它的每一个分支都解析,由于这个级数在z=-1以外一致收敛,所以R(z)在D上解析从而这里有几个Claim:1.z-&0则级数每一项都趋于0,从而0是可取奇点2.R的唯一奇点是在1的二阶奇点,是由于logz的主分支造成的,有3.R(1/z)=R(z)由于 1.和 3.有 R在扩充复平面上为亚纯函数,从而为有理函数,由2知道R(z)分母为(z-1)^2,由于R(0)=R(∞)=0,所以分子就是az,那么2说明a=1,就是说现在令得到也就是说,代入w=1/2
证明9:傅立叶分析证明教科书上最普遍的证明考虑函数将其傅立叶展开,计算得知显而易见,代入f(0)得到答案
证明10:傅立叶分析证明考虑函数,将其傅立叶展开利用Parseval等式其中a[n]为e^(i*pi*n)系数,有那么就知道
证明11:傅立叶分析证明 考虑在实轴上一致收敛,对于在,我们有这个和被控制,从而在[ε,2π-ε]一致有界,Dirichlet判别知道一致收敛所以对于同样区域的函数就得到
证明12:泊松公式证明 (Richard Troll)由泊松求和公式其中为傅立叶变换。若我们设,f的傅立叶变换为也就是说则就是
证明13:概率论证明 (Luigi Pace 发表于2011 American Math Monthly) 设X[1],X[2]是独立同半区域柯西分布,也就是它们的分布函数都是令随机变量Y=X[1]/X[2],,那么Y的概率密度函数p[Y],定义在y&0有由于X[1],X[2]独立同分布,即P(Y&1)=P(X[1]&X[2])=1/2,即也就是说
证明14:积分+函数方程证明 (H Haruki,S Haruki在1983年 American Mathematical Monthly发表)由于只需要算出这个积分值即可,我们令要求的是a=0的情况不过我们可以证明利用等式我们知道中间是令t=x^2代换掉的。解函数方程(1),求导两次知f''(a/2)+f''(pi-a/2)=f(a)/2由于f''在闭区间[0,2pi]上面连续,所以必然有最大值M,最小值m,那么有设f''(a[0])=M,则由于M是最大值,只能f''(a[0]/2)=M,f''(pi-a[0]/2)=M,一直迭代下去,我们有lim[n-&infty] f''(a[o]/2^n)=M,即f''(0)=M,同理有f''(0)=m,即M=m成立,那么f''为常值函数,f为二次函数。再计算二次函数系数代入式子(1),以及计算f'(pi/2),我们知道,代入a=0,即
证明15:三角恒等式的初等证明(Josef Hofbauer发表于2002年American Mathematical Monthly)从而就有又由于对x在(0,pi/2)成立令,对对不等式求和,就变为令n趋于无穷得到答案
证明16:三角多项式的证明(Kortram发表于1996年 Mathematics Magazine)对于奇数n=2m+1,我们知道,其中F[n]是n次多项式,那么F[n]零点为sin(j*pi/n)(-m&=j&=m),而且lim(y-&0) F[n](y)/y=n即从而比较两边泰勒展开的x^3系数,有于是固定整数M令m&M,则有利用sinx&2x/pi在x属于(0,pi/2)成立令n趋于无穷在令M趋于无穷
证明17:积分证明(Matsuoka发表于1961年American Mathematical Montly考虑积分我们有Wallis公式:那么对于n&0,分部积分有从而有得到将这个式子从1加到n,就有由于J[0]=pi^3/24,只需要证明后面一下为0即可,通用x&pi/2*sinx在[0,pi/2]成立,即就是说
证明18:Fejér核的证明(Stark在1969年American Mathematical Monthly上的证明)对于Fejér核有如下等式故而有如果我们令n=2N(n为偶数),那么利用sin(x/2)&x/pi对(0,pi)成立也即
证明19:Gregory定理证明证明来自Borwein & Borwein的著作"Pi and the AGM"以下公式是著名的Gregory定理:我们令我们需要证明即可若n不等于m,就有那么其中很容易可见c[-n,N]=-c[n,N],从而c[0,N]=0,对于n&0那么可知c[n,N]&=1/(N-n+1),故而即成立!
证明20:数论的证明(本证明来自华罗庚的数论,个人感觉是最神奇的证明)需要用到整数能被表示为四个平方的和。令r(n)为使n=x^2+y^2+z^2+t^2成立的四元组(x,y,z,t)的个数,那么最平凡是r(0)=1,而有公式对n&0成立,令,很容易可以看出,R(N)渐进于半径为sqrt(N)的四维球体积,也就是,另外其中同时我们又有在x-&infty成立,即得到
证明21:类似的初等证明首先我们要证明这个等式是由于注意到就立即可得令x=cot^2θ,变为有根对j=1,2...n成立,即韦达定理得到答案在由于1/θ&cotθ&1/θ-θ/3&0对0&θ&pi/2成立,即对于解θ[k]做和,就有从而有就是我们想要的
证明22:伯努利数的证明 函数为伯努力数B[k]的生成函数,B为亚纯,在1/(2pi*i*n)上为极点,利用Mittag-Leffler定理可以展开为后者可展开为几何级数是由于在重排级数的同时,奇数项消去了而偶数项留下了,所以我们就得到如下式子:也就是要求计算那么
其实还有些做法还没有收录,也许以后会更新。。
可否加精一个?
顶下就走了
证明补充:欧拉1741年的证明有时候会误解欧拉没有给出真正的证明(在
提醒前我是这么认为了),实际上他给出过真正严谨的证明,也就是要证明:而由于我们知道z^n-a^n的分解令z=1+x/N,a=1-x/N,有考虑1次项x的系数,我们有C[N]=2,对所有N成立,令N趋于无穷大,左边趋于e^x-e^(-x),右边是利用Taylor展开cos(y)~1-y^2/2,得到右边为(1+x^2/(k^2*pi^2)) 就得到了第一个公式
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或已知z属于复数,z的模为,z不等于正负1,求证:z-1/z+1是纯虚数z的模为1
TA0007的撒旦
设z=a+bi,且a²+b²=1(z-1)/(z+1)=(a+bi-1)/(a+bi+1)=(a-1+bi)/(a+1+bi)=(a-1+bi)(a+1-bi)/(a+1+bi)(a+1-bi)=[a+(bi-1)][(a-(bi-1)]/[(a+1)²+b²]=[a²-(bi-1)²]/(a²+2a+1+b²)=2bi/(2a+2)=bi/(a+1)即z-1/z+1是纯虚数
为您推荐:
其他类似问题
扫描下载二维码Java面试题全集(1.1)_ImportNew-爱微帮
&& &&& Java面试题全集(1.1)
(点击上方公众号,可快速关注)来源:骆昊链接:blog.csdn.net/jackfrued/article/details/2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客。在修订的过程中,参照了当时JDK最新版本(Java 7)给出了题目的答案和相关代码,去掉了EJB 2.x、JSF等无用内容或过时内容,补充了数据结构和算法、大型网站技术架构、设计模式、UML、spring MVC等内容并对很多知识点进行了深入的剖析,例如hashCode方法的设计、垃圾收集、并发编程、数据库事务等。当时我甚至希望把面试中经常出现的操作系统、数据库、软件测试等内容也补充进去,但是由于各种原因,最终只整理出了150道面试题。让我欣慰的是,这150道题还是帮助到了很多人,而且在我CSDN博客上的总访问量超过了5万次,最终还被很多网站和个人以原创的方式转载了。最近一年内,用百度搜索”Java面试”我写的这些东西基本上都排在搜索结果的前5名,这让我觉得”亚历山大”,因为我写的这些东西一旦不准确就可能误导很多人。2014年的时候我又整理了30道题,希望把之前遗漏的面试题和知识点补充上去,但是仍然感觉挂一漏万,而且Java 8问世后很多新的东西又需要去总结和整理。为此,我不止一次的修改了之前的180题,修改到自己已经感觉有些疲惫或者厌烦了。2014年至今,自己带的学生又有很多走上了Java程序员、Java工程师的工作岗位,他们的面试经验也还没来得及跟大家分享,冥冥之中似乎有一股力量在刺激我要重新写一篇《Java面试题全集》,于是这篇文章就诞生了。请不要责备我把那些出现过的内容又写了一次,因为每次写东西就算是重复的内容,我也需要对编程语言和相关技术进行重新思考,不仅字斟句酌更是力求至臻完美,所以请相信我分享的一定是更新的、更好的、更有益的东西,这些内容也诉说着一个职业程序员和培训师的思想、精神和情感。1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。2、访问修饰符public,private,protected,以及不写(默认)时的区别?答:修饰符当前类同&包子&类其他包public√√√√protected√√√×default√√××private√×××类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。3、String 是最基本的数据类型吗?答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。4、float f=3.4;是否正确?答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。6、Java有没有goto?答:goto 是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)7、int和Integer有什么区别?答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。Java 为每个原始类型提供了包装类型:- 原始类型: boolean,char,byte,short,int,long,float,double- 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Doubleclass AutoUnboxingTest {&& & public static void main(String[] args) {& & & & Integer a = new Integer(3);& & & & Integer b = 3; & & & & & & & & &// 将3自动装箱成Integer类型& & & & int c = 3;& & & & System.out.println(a == b); & & // false 两个引用没有引用同一对象& & & & System.out.println(a == c); & & // true a自动拆箱成int类型再和c比较& & }}最近还遇到一个面试题,也是和自动装箱和拆箱有点关系的,代码如下所示:public class Test03 {&& & public static void main(String[] args) {& & & & Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;&& & & & System.out.println(f1 == f2);& & & & System.out.println(f3 == f4);& & }}如果不明就里很容易认为两个输出要么都是true要么都是false。首先需要注意的是f1、f2、f3、f4四个变量都是Integer对象引用,所以下面的==运算比较的不是值而是引用。装箱的本质是什么呢?当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,如果看看valueOf的源代码就知道发生了什么。public static Integer valueOf(int i) {& & if (i &= IntegerCache.low && i &= IntegerCache.high)& & & & return IntegerCache.cache[i + (-IntegerCache.low)];& & return new Integer(i);}IntegerCache是Integer的内部类,其代码如下所示:/**& & &* Cache to support the object identity semantics of autoboxing for values between& & &* -128 and 127 (inclusive) as required by JLS.& & &*& & &* The cache is initialized on first usage. &The size of the cache& & &* may be controlled by the {@code -XX:AutoBoxCacheMax=&size&} option.& & &* During VM initialization, java.lang.Integer.IntegerCache.high property& & &* may be set and saved in the private system properties in the& & &* sun.misc.VM class.& & &*/&& & private static class IntegerCache {& & & & static final int low = -128;& & & & s& & & & static final Integer cache[];&& & & & static {& & & & & & // high value may be configured by property& & & & & & int h = 127;& & & & & & String integerCacheHighPropValue =& & & & & & & & sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");& & & & & & if (integerCacheHighPropValue != null) {& & & & & & & & try {& & & & & & & & & & int i = parseInt(integerCacheHighPropValue);& & & & & & & & & & i = Math.max(i, 127);& & & & & & & & & & // Maximum array size is Integer.MAX_VALUE& & & & & & & & & & h = Math.min(i, Integer.MAX_VALUE - (-low) -1);& & & & & & & & } catch( NumberFormatException nfe) {& & & & & & & & & & // If the property cannot be parsed into an int, ignore it.& & & & & & & & }& & & & & & }& & & & & & high =&& & & & & & cache = new Integer[(high - low) + 1];& & & & & & int j =& & & & & & for(int k = 0; k & cache. k++)& & & & & & & & cache[k] = new Integer(j++);&& & & & & & // range [-128, 127] must be interned (JLS7 5.1.7)& & & & & & assert IntegerCache.high &= 127;& & & & }&& & & & private IntegerCache() {}& & }简单的说,如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false。提醒:越是貌似简单的面试题其中的玄机就越多,需要面试者有相当深厚的功力。8、&和&&的区别?答:&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(“”),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。补充:如果你熟悉JavaScript,那你可能更能感受到短路运算的强大,想成为JavaScript的高手就先从玩转短路运算开始吧。9、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、”hello”和常量都是放在静态区中。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。String str = new String("hello");上面的语句中变量str放在栈上,用new创建出来的字符串对象放在堆上,而”hello”这个字面量放在静态区。补充:较新版本的Java(从Java 6的某个更新开始)中使用了一项叫”逃逸分析”的技术,可以将一些局部对象放在栈上以提升对象的操作性能。10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。12、用最有效率的方法计算2乘以8?答: 2 && 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。补充:我们为编写的类重写hashCode方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择31这个数?前两个问题的答案你可以自己百度一下,选择31是因为可以用移位和减法运算来代替乘法,从而得到更好的性能。说到这里你可能已经想到了:31 * num 等价于(num && 5) – num,左移5位相当于乘以2的5次方再减去自身就相当于乘以31,现在的VM都能自动完成这个优化。public class PhoneNumber {& & private int areaC& & private S& & private String lineN&& & @Override& & public int hashCode() {& & & & final int prime = 31;& & & & int result = 1;& & & & result = prime * result + areaC& & & & result = prime * result& & & & & & & & + ((lineNumber == null) ? 0 : lineNumber.hashCode());& & & & result = prime * result + ((prefix == null) ? 0 : prefix.hashCode());& & & && & }&& & @Override& & public boolean equals(Object obj) {& & & & if (this == obj)& & & & & && & & & if (obj == null)& & & & & && & & & if (getClass() != obj.getClass())& & & & & && & & & PhoneNumber other = (PhoneNumber)& & & & if (areaCode != other.areaCode)& & & & & && & & & if (lineNumber == null) {& & & & & & if (other.lineNumber != null)& & & & & & & && & & & } else if (!lineNumber.equals(other.lineNumber))& & & & & && & & & if (prefix == null) {& & & & & & if (other.prefix != null)& & & & & & & && & & & } else if (!prefix.equals(other.prefix))& & & & & && & & && & }&}13、数组有没有length()方法?String有没有length()方法?答:数组没有length()方法,有length 的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。14、在Java中,如何跳出当前的多重嵌套循环?答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。(Java中支持带标签的break和continue语句,作用有点类似于C和C++中的goto语句,但是就像要避免使用goto一样,应该避免使用带标签的break和continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好)15、构造器(constructor)是否可被重写(override)?答:构造器不能被继承,因此不能被重写,但可以被重载。16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?答:不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果两个对象的hashCode相同,它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在Set集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)。补充:关于equals和hashCode方法,很多Java程序都知道,但很多人也就是仅仅知道而已,在Joshua Bloch的大作《Effective Java》(很多软件公司,《Effective Java》、《Java编程思想》以及《重构:改善既有代码质量》是Java程序员必看书籍,如果你还没看过,那就赶紧去亚马逊买一本吧)中是这样介绍equals方法的:首先equals方法必须满足自反性(x.equals(x)必须返回true)、对称性(x.equals(y)返回true时,y.equals(x)也必须返回true)、传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)和一致性(当x和y引用的对象信息没有被修改时,多次调用x.equals(y)应该得到同样的返回值),而且对于任何非null值的引用x,x.equals(null)必须返回false。实现高质量的equals方法的诀窍包括:1. 使用==操作符检查”参数是否为这个对象的引用”;2. 使用instanceof操作符检查”参数是否为正确的类型”;3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;4. 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;5. 重写equals时总是要重写hashCode;6. 不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。17、是否可以继承String类?答:String 类是final类,不可以被继承。补充:继承String本身就是一个错误的行为,对String类型最好的重用方式是关联关系(Has-A)和依赖关系(Use-A)而不是继承关系(Is-A)。18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?答:是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。C++和C#中可以通过传引用或传输出参数来改变传入的参数的值。在C#中可以编写如下所示的代码,但是在Java中却做不到。using S&namespace CS01 {&& & class Program {& & & & public static void swap(ref int x, ref int y) {& & & & & & int temp =& & & & & & x =& & & & & & y =& & & & }&& & & & public static void Main (string[] args) {& & & & & & int a = 5, b = 10;& & & & & & swap (ref a, ref b);& & & & & & // a = 10, b = 5;& & & & & & Console.WriteLine ("a = {0}, b = {1}", a, b);& & & & }& & }}说明:Java中没有传引用实在是非常的不方便,这一点在Java 8中仍然没有得到改进,正是如此在Java编写的代码中才会出现大量的Wrapper类(将需要通过方法调用修改的引用置于一个Wrapper类中,再将Wrapper对象传入方法),这样的做法只会让代码变得臃肿,尤其是让从C和C++转型为Java程序员的开发者无法容忍。19、String和StringBuilder、StringBuffer的区别?答:Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer要高。面试题1 - 什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好?面试题2 - 请说出下面程序的输出。class StringEqualTest {&& & public static void main(String[] args) {& & & & String s1 = "Programming";& & & & String s2 = new String("Programming");& & & & String s3 = "Program" + "ming";& & & & System.out.println(s1 == s2);& & & & System.out.println(s1 == s3);& & & & System.out.println(s1 == s1.intern());& & }}补充:String对象的intern方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与String对象的equals结果是true),如果常量池中没有对应的字符串,则该字符串将被添加到常量池中,然后返回常量池中字符串的引用。20、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。面试题:华为的面试题中曾经问过这样一个问题 – “为什么不能根据返回类型来区分重载”,快说出你的答案吧!关注「ImportNew」看更多 Java 技术精选文章↓↓↓
点击展开全文
悄悄告诉你
更多同类文章
还可知道有多少人阅读过此篇文章哦
阅读原文和更多同类文章
可微信扫描右侧二维码关注后
还可知道有多少人阅读过此篇文章哦
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
您的【关注和订阅】是作者不断前行的动力
本站文章来自网友的提交收录,如需删除可进入
删除,或发送邮件到 bang@ 联系我们,
(C)2014&&版权所有&&&|&&&
京ICP备号-2&&&&京公网安备34

我要回帖

更多关于 tp link是什么 的文章

 

随机推荐