1.类和对象

第四章:面向对象

日历的作用是提供某个时间点的信息

查询设置信息:GregorianCalendar now = new GregorianCalendar()

int month = now.get(Calendar.MONTH);//得到当前月份

更改设置信息:GregorianCalendar deadline = new GregorianCalendar();

deadline.set(Calendar.YEAR,2001);//把时间设置为2001年

deadline.set(Calendar.MONTH,Calendar.APRIL);//将时间设为5月

deadline.set(Calendar.DAY_OF_MONTH,15);

设置年月的方法:deadline.set(2001,Calendar.APRIL,15);//把时间设置为5月15日

为给定的日期增加天数:deadline.add(Calendar.MONTH,3)//增加3个月

更改器方法:对实例域做出修改的方法

访问器方法:对实例域不能进行修改的方法

显示当月日历:

1.构造一个日历对象,并用当前日期和时间进行初始化。

2.将d设置为这个月的第一天,并得到这一天为星期几weekday,

如果这一天为星期日,就将weekday设置为Calendar.SUNDAY

3.getFirstDayOfWeek()的方法获得当地的星期的起始日期,如果weekday不等于firthweekday日期,往前缩进,weekday在赋值为这个月的week

4.得到星期的格式并打印,

自定义简单的类

想要要创建一个完整的程序,应该将若干类组合在一起,其中只有一个有main()方法。(方法在前面,定义变量的域在后面,更加关注接口消除了对实现的的注意)。

两个类写在同一个文件里面时,编译后会产生两个class文件。编译器发现一个类使用另一个类时,会自动查找另一个类的class文件,如果没有,自动搜索Java文件,然后编译。

构造器(构造函数):构造器名与类名相同,总是伴随着new操作符的执行被调用,没有返回值,可以后0,1个以上的参数。

私有方法:如果改用其他方法实现相应的操作,则不比保留原有的方法,如果数据的表达方式发生了变化,这个方法就变得难以实现,或者不在需要。

静态方法:静态方法是一种不能向对象实施操作的方法,Math.opow(x,a);x的a次幂,静态方法是没有this参数的方法,不能操作对象,不能在静态方法中访问实例域。

一个方法不需要访问对象状态,其所需要参数都是通过显示参数提供

一个方法只需要访问类的静态域、

一个方法不能修改一个基本数据类型的参数

一个方法可以改变一个对象参数的状态

一个方法不能实现让对象参数引用一个新的对象

对象的构造:

       重载:方法名相同,参数不同,编译器会根据参数类型和特定方法调用所使用的值类型进行匹配来挑选相对应的方法,如果编译器找不到对应的匹配参数,或者找出多个,会产生编译错误

默认构造器:默认构造函数,如果不写,程序会提供一个空的构造函数。

显示域初始化:类的构造器可以重载,所以可以采用多种形式设置的实例域的初始状态,确保不管怎样调用构造器,每个实例域都有一个有意义的初值。

调用构造器的具体处理步骤:

  1. 所以数据域均被初始化为默认值
  2. 按照在类中声明出现的次序,依次执行所有域初始化语句和初始化块
  3. 如果构造器第一行调用了第二个构造器,则执行第二构造器主体
  4. 执行这个构造器的主体

类的设计技巧:

  1. 一定将数据设为私有,绝对不要破坏封装性。
  2. 一定要对数据初始化,Java不会对局部变量进行初始化化,会对对象的实例域初始化。
  3. 不要再类中使用过多的基本类型,用其他的类代替多个相关的基本数据类型。
  4. 不是所有的域都需要独立的域访问器和域更改器。
  5. 使用标准的格式进行类的定义:类的顺序:

a)         公有访问特性部分

b)        包作用域访问特性

c)        私有域访问特性

类中每一部分:

实例方法

静态方法

实例域

静态域

  1. 将职责过多的类进行分解
  2. 类名和方法名要能体现他们的职责

继承:

Super:调用父类所需要的关键字,使用super调用构造器的语句必须是子类构造器的第一条语句。

多态:一个变量可以引用多种实际类型的现象,在运行时能够自动地选择调用哪个方法的现象叫动态绑定。特性:无需要对现存的代码进行修改,就可以对程序进行扩展呢

多态:

父类的对象可以引用子类的对象。

抽象类不能创建这个类的对象,但是可以创建一个具体子类的对象

Error: new Person(“Vincent vu ”);

Right:Person p = new Student(“vience vu”,“Economics”);

Equals方法:用于检测一个对象是否等于另外一个对象。判断是否具有相同的引用,如果具有相同的引用,他们一定是相等的,检测两个对象的状态相等。

完美教程:1.显式参数命名为otherobject,稍后会将他转换成一个叫other的变量

2.检测this与otherobject是否是引用同一个变量

3.检测otherobject是否为null,如果为null,返回false

4.比较this与otherobject是否属于同一个类,如果equals的语义在每个子类中有所改变,就用getclass,所有子类都拥有统一的语义,就使用instanceof检测。

5.将otherobject转换成相应的类类型变量

6.现在开始对所有需要比较的域进行比较,使用==比较基本类型域,使用equals比较对象域,如果所有的域都匹配,则返回true,否则返回false

对象包装器和自动打包:

接口:

Arrays类中的sort方法承诺可以对对象数组进行排序,但要求满足下列前提,对象所属的类必须实现了comparab接口,也就是说任何实现comparable接口的类都需要包含compareTo方法,并且这个方法的参数必须是一个object对象,返回一个整形数值。

回调:指出某个特定事件发生时应该采取的动作。

内部类:内部类是定义在一个类中的类,定义内部类的原因:内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。

内部类可以对同一个包中的其他类隐藏起来

想要调一个回调函数并且不想编写大量代码时,使用匿名内部类比较便捷。

图形程序设计:

顶层窗口:Frame类(Swing版本为jframe)

默认关闭:frame.setDefaultCloseOperation(JFrame.Exit_on_close);

setLocation()和setBounds()设置框架的位置

setIconImage():用于告诉系统在标题栏,任务栏切换窗口位置显示的图标

setTitle()改变标题栏的文字

setResizable()是否显示

isVisible():

setVisible(Boolean b):设置窗口是否可见

setSize(int width,int height)设置窗口宽高

Dimension getSize()

Void setSize()获取或者设置当前组件的size属性

toFront将窗口显示到其他窗口前面

toBack()将窗口移到桌面窗口栈的后面

isLocationByPlatfrom()

setLocationByPlatfrom()设置或者获取LocationByPlatfrom的属性,属性在窗口显示之前被设置

Container getContentPane()返回这个JFrame的内容窗格对象

Component add(Componen c)将一个给定的组件添加到该框架的内容格

Void repaint()从新绘制组件

Void repaint(int x.int y,int width,int height)从新绘制组件的一部分

PaintComponent(Grphics g)覆盖这个方法来描述应该来如何绘制自己的组件

创建一个二维图形:

Graphics2D g2 = (Graphics2D) g;创建一个绘图方法的对象,

创建一个矩形对象:Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);

通过绘图方法把矩形绘画出来,g2.draw(rect);

创建一个椭圆对象:Ellipse2D ellipse = new Ellipse2D.Double();

在矩形内部画一个椭圆:ellipse.setFrame(rect);

通过绘图的方法把图形画出来:g2.draw(ellipse);

把画图组件添加到窗体上面: DrawComponent component = new DrawComponent();

add(component);

jdbc:

我们可以将JDBC包看作一个用于将sql语句传递给数据库的应用编程的接口。

Jdbc语法的实例:jdbc:derby://localhost:1527/COREJAVA;creat=true

Jdbc:postgresql:COREJAVA

JDBC URL的一般语法:jdbc:subprotocol:other stuff

Subprotocol用于指明连接到数据库的特定驱动程序

Other stuff参数的格式随所用的subproyocol不同而不同

java核心技术笔记的更多相关文章

  1. [Java核心技术笔记]并发

    Runnable Runnable接口是函数式接口 //Runnable接口 public interface Runnable { void run(); } //用lambda表达式创建实例 Ru ...

  2. java核心技术 笔记

    一 . 总览 1. 类加载机制:jdk内嵌的class_loader有哪些,类加载过程.--后面需要补充 2. 垃圾收集基本原理,常见的垃圾收集器,各自适用的场景.--后面需要补充 3. 运行时动态编 ...

  3. java核心技术(第十版卷一)笔记(纯干货!)

    这是我读过的第三本关于java基础的书.第一本<<java从入门到精通>>这本书让我灵识初开.第二本<<java敏捷开发>>这本书则是有一次被一位师傅批 ...

  4. 【阅读笔记】Java核心技术卷一 #0

    这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...

  5. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  6. java核心技术学习笔记之一程序设计概述

    Java 核心技术之一程序设计概述 一.   Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...

  7. java中的自动拆装箱与缓存(Java核心技术阅读笔记)

    最近在读<深入理解java核心技术>,对于里面比较重要的知识点做一个记录! 众所周知,Java是一个面向对象的语言,而java中的基本数据类型却不是面向对象的!为了解决这个问题,Java为 ...

  8. 读《java核心技术卷一》有感

    过去一个多月了吧.才囫囵吞枣地把这书过了一遍.话说这书也够长的,一共706页.我从来不是个喜欢记录的人,一直以来看什么书都是看完了就扔一边去,可能有时候有那么一点想记录下来的冲动,但算算时间太紧,很多 ...

  9. 杨晓峰-Java核心技术-9 HashMap Hashtable TreeMap MD

    目录 第9讲 | 对比Hashtable.HashMap.TreeMap有什么不同? 典型回答 考点分析 知识扩展 Map 整体结构 有序 Map HashMap 源码分析 容量.负载因子和树化 精选 ...

随机推荐

  1. x264阅读记录-1

    x264阅读记录-1 采用x264版本是x264-snapshot-20060316-2245. 1. main函数 x264的main函数位于x264.c中,下面是main函数调用情况: (1)_s ...

  2. java调用第三方的webservice应用实例

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...

  3. 【问题与解决】怎么删除TFS云端上的项目

    最近使用了Visual Stuidio提供的网络项目管理,感觉跟visual stuido结合起来还是很好用的,新建项目很简单,但是在删除项目的时候就没有那么简单了,直接通过VS的团队管理删除还会报错 ...

  4. Python 3安装MySQLdb

    Python 2安装的是mysql-python,Python 3安装mysql-python以后,仍然不能import MySQLdb,原来Python 3应该安装mysqlclient,就可以im ...

  5. js 将图片文件转换成base64

      1.情景展示 在JavaScript中,如何使用图片文件转换成base64? 2.解决方案 /** * 网络图像文件转Base64 * @param img dom对象 */ function g ...

  6. WCF Restful Service Get / Post请求

    Rest 它是用于创建分布式超文本媒体的一种架构方式,我们可以通过标准的HTTP(GET,POST,PUT,DELETE)操作来构建基于面向资源的软件架构方式(Resource-Oriented Ar ...

  7. eclipse中项目jdk1.8刷新下就变成1.5的解决办法

    https://blog.csdn.net/qq_32814555/article/details/82803017 ***************************************** ...

  8. Shell 实现多线程(多任务)

    实现方案: 1.命令结尾添加:& #/bin/bash all_num= a=$(date +%H%M%S) ${all_num}` do { echo ${num} } & done ...

  9. SpringCloud(一)浅谈SpringCloud

    前言 现在微服务实在是太火了,所以我们必不可少的是要学习一下SpringCloud了,服务化的核心就是将传统的一站式应用 根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享D ...

  10. JS字符串常用方法总结

    1.toLowerCase(): 把字符串转为小写,返回新的字符串. var str="Hello World"; var str1=str.toLowerCase(); cons ...