Java核心技术读书笔记02

Wesley13
• 阅读 621

#第四章 对象和类

###类之间的关系 最常见的三种关系

  1. 依赖("uses-a") Order依赖Account类看信息
  2. 聚合("has-a") Order包含多个Item
  3. 继承("is-a")

知识点:所有Java对象都存在堆中。

GregorianCalendar类所包含的方法要比Date类多得多。

public避免标记实例域,public数据域允许程序中的任何方法对其进行读取和修改,这破坏了封装。强烈建议用private。


  1. 构造器和类同名
  2. 每个类中有一个以上的构造器
  3. 构造器的参数可以有0个,1个或多个参数
  4. 构造器没有返回值
  5. 构造器总是伴随着new操作一起调用

如果需要返回一个可变对象的引用,应该先对它进行克隆。

Java核心技术读书笔记02

静态方法:

  1. 一个方法不需要访问对象状态,其所需参数都是显示参数
  2. 一个方法只需要访问类中的静态域

静态代码块是在类被加载时被创建,非静态代码块是对象被创建时被加载的,不创建不会执行该类的非静态代码块。

·

public class TestA {
public static void main(String[] args) {
    B b=null;
    b=new B();
}
}

class  B{
public static int numB=1;

static{
    System.out.println("static block:  "+numB);
}

{
    System.out.println("block:   "+numB);
}

public B(){
    System.out.println("no parameter constructor");
}

public B(String string){
    System.out.println(" str parameter constructor");
}
}

· 结果:

Java核心技术读书笔记02

· public class TestA {

public static int numB=1;

static{
    System.out.println("static block:  "+numB);
}

{
    System.out.println("block:   "+numB);
}

public TestA(){
    System.out.println("no parameter constructor");
}

public TestA(String string){
    System.out.println(" str parameter constructor");
}

public static void main(String[] args) {
   TestA a=null;
   System.out.println("1111111111111");
   a =new TestA();
}
}

·

结果:

Java核心技术读书笔记02


类的导入

  1. java.util.Date today=new java.util.Date()
  2. impory java.uril.*;

如果一个类要使用2个相同的Date 则选择第一种

java.util.Date deadline=new java.util.Date();

java.sql.Date today =new java.sql.Date();

import 语句不仅可以导入类,还增加了导入静态方法和静态域的功能。


classpath

(1).何时需要使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类

(2).何时需要指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)


类的设计技巧

  1. 一定要保证数据私有。
  2. 一定要对数据初始化。
  3. 不要在类中使用过多的基本类型。
  4. 不是所有的域都需要独立的域访问器和域更改器。
  5. 将职责过多的类进行分解。
  6. 类名和方法名要能够体现它们的职责。

public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

Java核心技术读书笔记02


点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java常用类(2)
三、时间处理相关类Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。示例:packagecn.tanjian
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这