20155201 2016-2017-2 《Java程序设计》第三周学习总结

it2022-05-09  35

20155201 2016-2017-2 《Java程序设计》第三周学习总结

教材学习内容总结

- 第四章要点:

4.1类与对象类定义时使用class关键词,基本模式为 class name{ int a; int b; float c; String d; }

对比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参考的对象不同。

- 第五章要点:

5.1 何谓封装 使用java的构造函数语法,实现对象初始化流程的封装,拿到封装类的用户,不用重复撰写对象初始化流程。 封装对象操作流程实例: void fun(int a){ if(a>0){ this.num++; } } 5.2类语法细节 public、private可以使用在类、方法、成员变量前定义。 构造函数:在定义类时,可以使用构造函数定义对象建立的初始流程。构造函数是与类名称同名,无需声明返回类型的方法。示例: class name{ int a=0; String strs; name(int a,String strs){ this.a=a; this.strs=strs; } }

数据成员初始值

数据类型初始值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 Fibonacci { public static void main(String[] args) { System.out.printf("求几个斐波那契数?"); int num; Scanner scanner=new Scanner(System.in); num=scanner.nextInt(); int[] fb=new int[num]; fb[0]=0; fb[1]=1; int i=0; for(i=0;i<num;i++){ if(i>1){ fb[i]=fb[i-1]+fb[i-2]; } System.out.printf("=",fb[i]); } } }

运行结果:

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!"); } } }

运行结果:

代码调试中的问题和解决过程

教材P124页CashApp代码中缺少对CashCard类的定义,缺少编译不通过:

补上定义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; } }

运行结果如下:

代码托管

代码提交过程截图: 运行 git log --pretty=format:"%h - %an,
转载请注明原文地址: https://win8.8miu.com/read-1488679.html

最新回复(0)