一、对象导论

1:多态的可互换对象

  面向对象程序设计语言使用了后期绑定的概念。

  当向对象发送消息时,被调用的代码直到运行时才能确定。也叫动态绑定

2:单根继承结构

  所有的类最终都继承自单一的基类,这个终极基类的名字就是Object

3:对象的创建和生命期

  对象的数据处于作用域,Java完全采用了动态内存分配方式(基本类型只是一种特例)

二、一切都是对象

1:基本类型

  基本类型是一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中

2:Java中的数组

  Java确保数组会被初始化。而且不能在它的范围之外被访问

3:作用域(scope)

  Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外

  {

   String s = new String("a string");   } // End of scope 引用 s 在作用域终点就消失了。然而,s 指向的 String 对象仍继续占据内存空间

  import 关键字

  指示编译器导入一个包,也就是一个类库,Java中所有的代码都必须写在类里。特定类 java.lang 会被自动导入到每一个Java文件中。

5:static 关键字

  • 只想为某一特定域分配单一存储空间,而不去考虑空间要创建多少对象,甚至根本就不创建任何对象。
  • 希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。
  • static作用于字段时,会改变数据的创建方式
  • static方法的一个重要用法就是在不创建任何对象的前提下就可以调用它;
  • static方法就是没有this的方法,不能直接调用非静态方法,但可以传递一个对象引用到静态方法里,然后通过这个引用(和this效果相同)来调用非静态方法和访问非静态数据成员。。

三、关系操作符

1:== 和 != 比较的是对象的引用

2:特殊方法equals() 的默认行为也是比较引用

四、控制执行流程

1:if else

2:switch

  JDK1.7开始,switch开始支持String作为选择因子。在switch语句中,String的比较用的是String.equals()

  因此,需要注意,传给switch的String变量不能为null,同时switch的case子句中使用的字符串也不能为null

五、初始化与清理

1:方法重载

  重载方法,方法名相同,形式参数列表不同(参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同)

2:重载约束

  • 声明为final的方法不能被重载
  • 声明为static的方法不能重载,但是能够被再次声明。
  • 重载方法的返回类型可以相同也可以不同,但仅返回类型不同不足以成为方法的重载。

  class Animal {
    public static void walk() { System.out.println("Animal行走方法"); }
  }
  public class Horse extends Animal {
    public void walk(String s) {
    System.out.println("Horse四条腿行走");
    }
    public static void main(String [] args) {
      new Horse().walk("");
    }

  }

  class Animal {
    public static void walk() { System.out.println("Animal行走方法"); }
  }
  public class Horse extends Animal {
    public static void walk() { //重新定义
    System.out.println("Horse四条腿行走");
    }
    public static void main(String [] args) {
    new Horse().walk();
    }

  }

3:成员初始化

  有变量在使用前都能得到恰当的初始化。

  Java 中类的成员变量会被自动初始化,但是方法里头的局部变量不会被自动初始化

  自动初始化的进行,它将在构造器被调用之前发生

  成员变量是基本类型,Java会自动初始化初值;

  成员变量是引用类型,Java会自动初始化初值null;

4:对象的创建过程

  类加载检查-->分配内存-->初始化零值-->设置对象头-->执行成员变量的初始化-->执行init方法,执行构造方法

5:数组初始化

  初始化:

    • int[] a = new int[3]; 初始化各元素值为0,对于boolean,初始值为false;
    • int[] a = {1, 2, 3}; 初始化元素分别为1, 2, 3;

六、访问权限控制

  • 同一个.java文件,只能有一个与文件同名的public类,可以有其它非public类;
  • 同一个package内的不同文件中的类,可以互相访问。
  • 不同package中的类,如需访问,需要使用全限定名,如biz.superalloy.MyClass或通过import把biz.superalloy包引进来;
  • default有时候也称friendly,它是针对本包访问而设计的
  • 类中的成员变量,不声明访问修饰符时,为“包访问权限”,有时也表示friendly,同一个文件的不同类之间可以互相访问。
  • 如果没能为类访问权限指定一个访问修饰符,它将会默认得到包访问权限。
  • 1. public修饰符具有最大的访问权限,可以访问任何一个CLASSPATH下的类,接口、异常等。它往往对于对外的情况,也就是对象或类对外的一种接口形式。
  • 2. default有时候也称friendly,它是针对本包访问而设计的,任何处于本包下的类,接口,异常等,都可以互相访问,即使是父类没有用protected修饰的成员也可以。
  • 3. protected修饰符它的主要作用就是保护子类的。它的含义在于子类可以使用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。
  • 4. private修饰符它的访问权限仅限于类的内部,是一种封装(Java的三大特点之一,继承,封装和多态)的体现。

 

七、复用类

1:@Override注解-它的作用是告诉编译器我想重写这个方法,避免不必要的异常

2:final关键字-使用到final的三种情况:数据、方法和类

  • final 基本类型,数据编译期常量在定义(声明)时必须对其赋值(声明时也可以不赋(此时叫空白final),但必须在构造器中赋值,所以final域在使用前总是被初始化)。
  • final常量常与static一起使用,强调只有一份。
  • final 对象引用
  • final参数这一特性主要用来向匿名内部类传递数据
  • final方法-锁定方法,以防任何继承类修改它的含义。这是出于设计的考虑;
  • 类中所有的private方法都隐式地指定为是final的。由于无法取用private方法,所以也就无法覆盖它
  • final类不希望它有子类。因为final类禁止继承,所以final类中所有的方法都隐式指定为是final的,因为无法覆盖它们

3:初始化及类的加载

  类的代码在初次使用时才加载,通常是指加载发生于构造类的第一个对象之时,但是当访问static域或static方法时,也会发生加载

  (构造器也是static方法,尽管static关键字并没有地写出来。因此更准确地讲,++类是在其任何static成员被访问时加载的++。)

4:初始化

  初次使用之处也是staic初始化发生之处

Java基础之五、Java编程思想(1-7)的更多相关文章

  1. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  2. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  3. java基础-学java util类库总结

    JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...

  4. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  5. Java基础技术-Java其他主题【面试】

    Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking I ...

  6. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  7. Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用.包括:强引用,软引用,弱引用,虚引用.这篇博客将详细的讲解一下这四种引用. 1. 强引用 2. 软引用 3. 弱引用 4. 虚 ...

  8. Java基础-使用JAVA代码剖析MD5算法实现过程

    Java基础-使用JAVA代码剖析MD5算法实现过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. JAVA面向接口的编程思想与具体实现

    面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的.        问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就了 ...

  10. java基础知识——网络编程、IO流

    IO流 字节流:处理字节数据的流对象,计算机中最小数据单元就是字节.InputStream OutputStream 字符流:字符编码问题,将字节流和编码表封装成对象就是字符流.Reader Writ ...

随机推荐

  1. python,for循环的使用案例集

    1.循环执行某一系列操作.将该操作定义为一个def,然后使用for去循环执行该操作 思路,先把操作定义为一个函数,在for循环执行这个函数 比如下面案例,把微信好友列表内的好友,循环的方式依次调整到第 ...

  2. Python zmq的三种简单模式

    ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单.简洁和性能更高. 是一个消息处理队列库,可在多个 ...

  3. Linux下的openssh详解

    前言 SSH(Secure Shell)是一个提供数据通信安全.远程登录.远程指令执行等功能的安全网络协议,由芬兰赫尔辛基大学研究员Tatu Ylönen,于1995年提出,其目的是用于替代非安全的T ...

  4. java8 stream按对象多个属性对集合进行分组,并进行组装数据

    如图,数据库查出来的数据: 需求是按menu_id和menu_name分组,stream实现最简单, stream里面只有按一个属性分组的,但是可以利用string简单变换一下: List<Js ...

  5. 大数据面试题(一)----HADOOP 面试题

    1. 下列哪项通常是集群的最主要瓶颈(C) A. CPU B. 网络 C. 磁盘IO D. 内存 2. 下列哪项可以作为集群的管理工具?(C) A.Puppet B.Pdsh C.ClouderaMa ...

  6. Centos 7x 安装 Telegram MTproxy代理【完美可用】

    0x00 最近迷上了Telegram,也就是电报,觉得通过这个获取国外的新闻比较方便 可是我的VPS小机子不给力,一开始使用的Centos 6x,死活装不上去, 发现MTproxy不支持Centos ...

  7. 网络收发与Nginx事件间的对应关系

    主机A可以想象是家里面的一台笔记本,也就是客户端,主机B可以想象成服务器上跑着nginx 主机A发送一个http的get请求到主机B经历了哪些请求. 在数据流: 应用层发送了一个get请求,传输层中, ...

  8. what is muxing and demuxing

    They're short for multiplexing and demultiplexing. Multiplexing means combining different types of d ...

  9. python 类 --导入类

    导入类 1.1.导入单个类 如何导入单个类 以上一节为例,编写一个car.py程序 编写一个新程序my_car.py 希望在my.car.py文件中直接使用car.py中的函数,使用from car ...

  10. python修改获取xlsx数据

    刚才要修改一个表格的数据,在网上搜了下方法,做出以下总结: 简单的取出数据以及写入数据 import xlrd data = xlrd.open_workbook(r'C:\Users\亦清\Desk ...