java第二次作业
学习总结
1.Equals方法和==的区别。
package zuoye;
public class Equal {
public static void main(String[] args){
String str1="word";
String str2=new String("word");
String str3=str2;
System.out.println("str1 equals str2-->"+(str1.equals(str2)));
System.out.println("str1 equals str3-->"+(str1.equals(str3)));
System.out.println("str2 equals str3-->"+(str2.equals(str3)));
}
}
输出结果是
str1 equals str2-->true
str1 equals str3-->true
str2 equals str3-->true
package zuoye;
public class Equal {
public static void main(String[] args){
String str1="word";
String str2=new String("word");
String str3=str2;
System.out.println("str1==str2-->"+(str1==str2));
System.out.println("str1==str3-->"+(str1==str3));
System.out.println("str2==str3-->"+(str2==str3)));
}
}
结果是
str1==str2-->false
str1==str3-->false
str2==str3-->true
2.构造方法是指可以在对象实例化时就直接把对象的值赋给属性的简单方法。
构造方法的重载:只要每个构造方法的参数类型或参数个数不同,即可实现重载。
package zuoye;
public class Test {
public static void main(String args[]) {
Foo obj = new Foo();
}
}
class Foo{
int value;
public Foo(int intValue){
value = intValue;
}
}
程序运行有错误,显示Foo未声明。上面那个是一个无参的函数,而下面是一个含参的函数。
3.运行下面程序
package zuoye;
public class Test1 {
public static void main(String args[]) {
double a = 0.1;
double b = 0.1;
double c = 0.1;
if((a + b + c) == 0.3){
System.out.println("等于0.3");
}else {
System.out.println("不等于0.3");
}
}
}
结果是“不等于0.3”因为有精度缺失问题,所以结果不等于0.3。对于不需要进行精确计算的数字可以用float或者double,但是如果需要精确计算的结果,就必须要用BigDecimal类。
将上面程序改为如下:
package zuoye;
import java.math.BigDecimal;
public class Test1{
public static void main(String[] arg){
System.out.println("相加:"+MyMath.Round(MyMath.add(0.1,0.1,0.1),1));
}
}
class MyMath {
public static double add(double d1,double d2,double d3) {
BigDecimal b1=new BigDecimal(d1);
BigDecimal b2=new BigDecimal(d2);
BigDecimal b3=new BigDecimal(d3);
return b1.add(b2).add(b3).doubleValue();
}
public static double round(double m,int n){
BigDecimal b1=new BigDecimal(m);
BigDecimal b2=new BigDecimal(n);
return b1.divide(b2,n,BigDecimal.ROUMD_HALF_UP).doubleValue();
}
4.运行程序
public class Test {
public static void main(String[] args) {
MyClass[] arr=new MyClass[3]; arr[1].value=100;
}
}
class MyClass{
public int value=1;
}
错误没有对数组进行初始化,更改:
public class Test {
public static void main(String[] args) {
MyClass[] arr=new MyClass[3];
arr[1]=new MyClass();
arr[1].value=100;
}
}
class MyClass{
public int value=1;
}
5.应该使用StringBuffer类,String类相对性能比StringBuffer类低。
例:
Package org_lxh.demo11.stringbufferdemo;
Public class StringBufferDemo09{
Public static void main(String[] args){
String str1=”LiXingHua”;
For(int i=0;i<100;i++){
Str1+=i;
}
System.out.println(str1);
}
}
程序中需要不断地修改String的内存引用,性能较低
Package org_lxh.demo11.stringbufferdemo;
Public class StringBufferDemo10{
Public static void main(String[] args){
StringBuffer buf=newStringBuffer();
Buf.append(“LiXingHua”);
For(int i=0;i<100;i++){
Buf.append(i);
}
System.out.println(buf);
}
}