对比c语言中结构体struct的定义,帮助记忆。 想要在建立对象时,一并进行某个初始流程,比如指定数据成员值(int a,b),选择定义构造函数。
class name{ int a; int b; String d; name(int a,int b,String d){ this.a=a; this.b=b; this.d=d; } }在java.math.BigDecimal的使用中,数值的加减和等于由
result=op1+op2; result2=op1-op2; if(result==op1+op2)对应为
BigDecimal result=op1.add(op2); BigDecimal result2=op1.substract(op2); if(op1.add(op2)equals(result))“=”在基本类型与类类型中的差别: =用于基本类型时,将值赋值给某个变量;==用于基本类型时,是比较两个变量储存的值是否相同。 =在操作对象中,=用在指定参考名称参考某个对象,==用在比较两个参考名称是否是参考同一对象。想要比较两个参考名称的对象内含值是否相同,则要使用a.equals(b)。
4.2基本类型打包器 基本类型类类型intIntegerlongLongfloatFloatdoubleDoublebooleanBooleanbyteByte自动装箱:
int data1=1; int data2=2; Integer warpper1=new Integer(data1); Integer warpper2=new Integer(data2);对应如下:
Integer data1=1; Integer data2=2; 4.3数组对象定义一个数组:
int[] a={1,2,3};数组的复制:
int[] score1={1,2,3}; int[] score2=score1;这段代码只是将score1参考的数组对象也给score2参考,即书本中比喻将score1名牌绑的对象也绑上score1的名牌。
int[] score1={1,2,3}; int[] score2=new int[score1.length]; for(int i-0;i<score1.length;i++){ score2[i]=score1[i]; }这段代码建立score2数组,长度与score1相同,逐一将score1中的索引元素指定到score2的对应索引位置。
浅层复制与深层复制的应用区别在于是否复制类中的属性。 浅层复制:
for(int i=0;i<c1.length;i++){ c2[i]=c1[i]; }深层复制:
for(int i=0;i<c1.length;i++){ c2[i]=new Clothes(c1[i].color,c1[i].size); } 字符串对象 字符串常量与字符串池: public class compare { public static void main(String[] args) { String name1="Justin"; String name2="Justin"; String name3=new String("Justin"); String name4=new String("Justin"); System.out.println(name1==name2); System.out.println(name1==name3); System.out.println(name3==name4); } }"Justin"建立的String在字符串池中维护,所以name12参考的是同一个对象,而name34因为是new String所以建立的两个不一样的字符串,所以name34参考的对象不同。
数据成员初始值
数据类型初始值byte0short0int0long0Lfloat0.0Fdouble0.0Dchar\u0000booleanfalseStringnull类null编译程序会在你没有撰写任何构造函数时,自动加入默认构造函数,所以可以这样以无自变量方式调用构造函数:
Some some=new Some();重载构造函数: 可以定义多个构造函数,只要参数类型不同或者个数不同。
public class Some{ private int a=10; private String text ="n.a."; public Some(int a){ if(a>0){ this.a=a; } } public Some(int a ,String text){ if(a>0){ this.a=a; } if(text!=null){ this.text=text; } } }final与static的区别在于:
final double PI=3.14159;表示仅成员对象PI拥有不变值3.14159,
static final double PI=3.14158;表示整个类拥有PI值;取值时应用:
name(类名称).PI传值调用中c.name="String"与c=new classname("String");后者产生了新的参考对象,在结束函数调用时被JVM清除,而前者直接改变了函数穿入值。
运行结果:
P121操作题查找数组中用户指定数字是否存写 import java.util.Scanner; public class Find { public static void main(String[] args) { int[] num={1,10,31,33,37,48,60,70,80}; System.out.println("Input find-number:"); Scanner scanner=new Scanner(System.in); int find; find=scanner.nextInt(); int i; for(i=0;i<9;i++){ if(find==num[i]){ System.out.println("find it!"); break; } } if(i==9){ System.out.println("No!"); } } }运行结果:
补上定义CashCard类:
class CashCard1{ String number; int balance; int bonus; CashCard1(String number,int balance,int bonus){ this.number=number; this.balance=balance; this.bonus=bonus; } }运行结果如下:
