JAVA第一周学习周记:java基础及面向对象基础知识

3.29-4.5号一周小结

本周是开课的第二个星期,前面一个星期学了linux的一些命令及基本的java程序的抒写,整体上比较简单,所以也没什么好说的了。这一周,整体上比较忙碌,每天布置的作业量也比较多,难度也比较大,直到目前为止,我还没有将知识融会贯通,所以还有很大的提升空间。学习方法好像也有点不对劲,跟不上老师的进度。

那来谈谈上周的学习内容吧:

1.              java语言中其中的选择、循环结构是其中最基础的内容,这部分基础一定要打牢。我的问题在于循环结构里面结合数组的运用,也就是所谓的嵌套。

      基本结构:for(int i=0;i<a.length;i++){

                       for(int j=0;j<a[i].length;j++){

                         a[i][j]=…..}}

这里边的内容需要灵活运用,就像老师说的,循环结构的感觉我还没出来,所以这方面最重要的还是要多做练习,培养感觉。

2.              数组的声明和初始化。数组的声明并不只是局限于整型数组,它适用于一切对象。最主要的问题还是不能善于联想,将整型数组大范化,从而使得各中对象都适用。

基本结构:int[] a=new int[5];  /声明并初始化

                Int[] a;   a=new int[5];

                Int[] a=new int[]{10,20,30,40};

                Int[] a={10,20,30,40};

将整型的可以转化成其他的对象,比方说Person[] a=new Person[5];

3.              这周最重要的就是oop也就是所谓的面向对象的开发过程。由于以前基础不是很好,所以现在理解起来有点困难。Java开发程序其实就是一组数据及其在数据上进行的操作。所以在分析一个问题的时候,首先要将问题的对象(名词)和方法(动词)找出来,然后再一个个的分析。

基本问题:

1.方法:定义时声明的形参类型要和调用时给出的实参类型匹配,只要求实参类型可以自由转换为形参类型。

方法中返回的值要和方法声明时返回值类型匹配(如果不为void,一定要return

方法调用的过程:栈分配临时存储空间,实参值传给形参,主方法跳到被调用方法,释放空间,回到主方法。(总结:如果传递的是基本数据,则主方法的值不变,如果是引用,则主方法的值可能改变。)

2.构造方法:方法名必须和类名完全一致。没有返回值类型。(主方法在new一个新对象的时候,就一定要调用构造方法)构造方法的作用主要是为属性赋上满足业务逻辑的初始值。

3.方法的重载:一个类中,多个方法同名不同参(参数的类型或者是顺序不同),可以通过参数类型来知道是调用那个方法。

4.继承extends:任何子类构造方法一定会调用父类构造方法,构造方法的调用和对象的生成是捆绑在一起的,那么生成子类对象一定要生成父类对象。(创建了个小孩子对象必然就创建了个人类对象)

方法的覆盖也就是实现了该父类的方法(返回值类型相同,访问控制修饰符应该比父类开放)—————父类和子类有相同的行为,但是行为方式却不同

4.              多态(oop的核心思想):子类对象可以当作父类对象来看待(Anmial a=new Bird();  当子类对象当作父类对象来看的时候,只能访问父类中定义的属性和方法,不能访问子类中扩展的属性和方法(一个科学家把他扔在大街上,没有人知道他是谁,只知道他是个人,所以他本身的属性和方法并不为人知)

子类方法把父类方法覆盖的时候,把子类对象当作父类对象来看的话,调用的还是子类的方法(当你孩提的时候把马当作是动物,而不知道他是马,可是这个马吃的还是草,并不会因为你主观的认定而发生改变)也就是说对象的行为方式并不会因为我们把他当什么看而发生改变

当想把一个对象当作另一个对象看的时候,必须这个对象是另外一个对象的实例。所以一般要转换的时候我们都要来做个判断

If(a instanceof b){ Bird b=Birda}

5.              修饰符

static静态的,它只用来修饰类的属性和方法。

一个类中如果定义方法为静态的,就是说无须本类的对象即可调用方法。

类名.方法名即可访问。

静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了。      相当与C中的全局变量。

final可以修饰类,属性,方法以及局部变量

修饰类,说明是最终类,不能有子类。修饰属性,说明是常量,值不能改变。

修饰方法,说明是最终方法,不能被覆盖,修饰局部变量说明是常量。

abstract修饰类和方法

某个类有抽象方法,其类也必须定为抽象类。不包含抽象方法,也可定义为抽象类。 抽象类不能实例化(不能new一个对象),所以一定要有子类,子类来实例化。和final类不相容。也有构造方法,子类构造方法来调用。

抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

接口:特殊的抽象类

接口中的所有属性都是static final

接口中的所有方法都是抽象方法 所以可以省略abstract

接口不能实例化 也没有构造方法(跟抽象类的本质区别)

一个类只能继承自一个父类,但是能同时实现多个接口

6.              Object对象的clone方法

首先要实现Cloneable 接口(里面没有任何方法)

其次clone的实现和覆盖(Animal b=Animanla.clone();

前面和main方法中要加throws CloneNotSupportedException

Clone方法实现的只是浅拷贝,意思是传递的时候是拷贝了一份地址,只是现在多了一个指向对象的地址,当改变现在对象的时候,原来的对象也被改变了。

7.              一个内存空间可以分为三个部分:栈,堆以及公共空间(静态成员、对象池)

对象池保存的是字符串型数组,也只是一个引用,一个地址。

(当看到有双引号括起来的字符串时候,都先是从对象池找有没有这样的对象,如果有,则返回这个地址,若没有,则生成新的对象为这个字符串的值,同时,在对象池里边产生这样一个指向对象的地址,同时将地址返回。)

String类型的对象的值是无法改变的。

StringBufferappend方法,在指定对象后追加内容和String里面的+的区别是 这个不产生新的对象)

StringBuilder线程不安全,不能在多线程并发中适用,单线程中访问的时候有限考虑。

 

学了很多的知识点,可是在具体的程序编写中,总是不知无从下手。甚至很多时候下手了,也会产生很多的细节错误,这就是说在本质上并没有理解上课讲课的内容,只是肤浅的理解。那么怎么样才能提高,多做,多看,多思考,多总结。

 既然选择了开始,就应该好好的把握,好好的去面对。很多东西是自己无法选择的,没有天赋,只能勤来补。更何况任何时候的开始都是困难的,走过了这一关就好了。

明天又是新的一周了,一定要克服本身心理及生理的弱点,以饱满热情的姿态面对每一天,每个人。相信下一周,是果实累累的一周,是成功的一周。Fighting

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值