1.包和访问权限修饰符
1.1 包
为什么要导包?
将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹
import java.util.Arrays;
包的划分规则
方案1 按照功能划分
增删改查 CRUD
www.qf.cm

cn.qf.功能

cn.qf.add
AddStudent.java
AddTeacher.java
cn.qf.delete
DeleteStudent.java
DeleteTeacher.java
cn.qf.update
UpdateStudent.java
UpdateTeacher.java
cn.qf.select
SelectStudent.java
方案2 以模块进行划分
cn.qf.student
AddStudent.java
DeleteStudent.java
UpdateStudent.java
SelectStudent.java
cn.qf.teacher
定义包的格式:
package 包名;
多层包名中间 点 分割
带包的类编译和运行命令:
编译: javac -d . 类名.java
-d是打包 .是代表当前目录
运行: java 包名.类名
定义包的注意事项:
1.package语句必须是程序的第一条语句
2.package语句在一个java文件中 只能有一条
3.如果没有package 默认表示无包名
import关键字:
其实就是让有包的类 对调用者可见
格式:
import 包名.类名;
import java.util.Scanner;
注意:
这种方式导入的是指定包下的指定某个类
* 通配符 意为导入当前包下的所有类
import java.util.*; 不建议

import 可以有多条语句存在
1.2 访问权限修饰符
四种访问权限修饰符
本类 同包(子类/无关类) 不同包(子类) 不同包(无关类)
private √
默认(default) √ √
protected √ √ √
public √ √ √ √

总结
类及其所组成使用的常见修饰符****
修饰符:
权限修饰符 private 默认 protected public
状态修饰符 static final
抽象修饰符 abstract
类:
默认 public
final
abstract
成员变量:
四个权限修饰符
static final
用的最多的 private
成员方法:
四个权限修饰符
static final
abstract
用的最多的 public
构造方法:
四个权限修饰符
用的最多的 public
除此之外的组合:
接口中的成员变量 public static final
成员方法 public abstract

2.单例设计模式
设计模式 就是软件对某一些问题 最行之有效的解决方案
设计模式 纯粹的思想 不是偏代码的 不管哪个语言 都可以使用设计模式
23种设计模式

单例设计模式
例如 配置文件 只需要一个
游戏显示当前在线人数 这个功能是依靠于 计数器来实现的
对于这项功能 通常都是定义一个计数器 来记录人数增加 或者减少
只要创建一个计数器就够了
这 一个 就意味着 单例的意思

通过只创建一个对象 解决问题
解决一个类在内存中只存在一个对象 这个问题
想要保证对象的唯一性 如何实现?
1.为了避免其他程序过多的创建对象 先禁止其他程序创建该类对象
私有化构造方法
2.为了让其他程序可以访问到该对象 只好在本类中 创建一个对象
3.为了方便其他程序对自定义对象的是访问 可以对外提供一个方法

//1.私有化构造方法
private Single(){}
//2.创建本类对象
private static Single s = new Single();
//3.对外暴露一个可以访问该对象的方法
public static Single getInstance(){
return s;
}
解决: 频繁的创建对象 销毁对象
会造成系统性能下降 浪费内存
饿汉式
类一加载 就创建本类对象
懒汉式
调用方法 我才创建本类对象
3.Object类常用方法
public class Object类
Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

1.boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
默认Object类中的equals方法 比较的是对象的地址值是否相同

==符号 和 equals()方法的区别****
==是一个比较运算符 既可以比较基本数据类型 也可以比较引用数据类型
基本数据类型 比较的是值
引用数据类型 比较的是地址值
equals是一个方法 只能比较引用数据类型
引用数据类型 在方法没有重写前 和 == 一样 都是比较地址值的
引用数据类型 重写后 比较的是对象中的属性值
因为比较对象的地址值没意义
所以重写equals方法 比较对象的属性值是否相同
如果属性值相同 我们认为是同一个对象
2.int hashCode()
返回该对象的哈希码值。
如果根据 equals(Object) 方法,两个对象是相等的,
那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

如果根据 equals(java.lang.Object) 方法,两个对象不相等,
那么对这两个对象中的任一对象上调用 hashCode 方法不
要求一定生成不同的整数结果。
但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

规定:
当 obj1.equals(obj2) 为true的时候 obj1.hashCode() == obj2.hashCode();
当 obj1.equals(obj2) 为false的时候 obj1.hashCode() != obj2.hashCode();
3.String toString()
返回该对象的字符串表示。
Object类中的toString()方法返回一个字符串
该字符串由类名(对象是该类的一个实力)+@+地址值(16进制)的组成
打印地址值没意义
一般我们通过方法的重写 去打印对象的属性

4.内部类
将一个类 定义在另一个类的里面 里面的那个类就叫做内部类 内置类 嵌套类
例如:
class 电脑{
属性 颜色 大小 型号
行为 运行
class CPU{

}
}

class 人体{
属性...
行为...
class 肝脏{

}
}
4.1 成员内部类
class Outer{
class Inner{

}
}
创建成员内部类对象格式:
外部类名.内部类名 变量名 = new 外部类对象.new 内部类对象
Outer.Inner oi = new Outer().new Inner();

特点:
1.内部类可以直接访问外部类中的成员 包括私有的
2.外部类如果想要访问内部类的成员 必须创建内部类对象
3.当类为内部类的时候 可以使用private修饰 因为它是外部类的一个成员
4.当内部类被私有化后 就不能在外部其他类中创建该类对象了

4.2 静态内部类
当内部类被static修饰后 就叫做静态内部类
创建静态内部类对象格式:
外部类名.内部类名 变量名 = new 外部类名.内部类对象
Outer_02.Inner_02 oi = new Outer_02.Inner_02();
特点:
如果内部类被静态修饰了 那么只能访问外部类中被静态修饰的成员 访问出现了局限性
4.3 局部内部类
放在类中方法中的类
在局部内部类 访问它所在的局部变量时 只能访问被final修饰的常量
jdk1.8的新特性 final 可以省略不写 但本质还是常量
4.4 匿名内部类(内部类的简写格式)
匿名内部类 其实就是内部类的简写格式

if...else 能转换成三元运算符
必须要有结果才能转成简写格式

想要简化书写 必须有前提
前提条件:
内部类必须继承一个类 或者 实现一个接口
格式:
new 类或者接口名(){
重写方法
}.调用重写的方法();
匿名内部类中定义的方法 最好不要超过3个

包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类的更多相关文章

  1. 访问权限修饰符-static-final-this-super-匿名对象

    1.this关键字的作用     1)调用本类中的属性;     2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用     3)表示当前对象; 2.匿名对象     ...

  2. java_访问权限修饰符

    java的访问权限修饰符有四种,根据权限由大到小的顺序为:public,protected,包访问权限(默认,没有修饰符),private. 根据修饰的东西不同,详细介绍如下: 1.修饰类的话分为两种 ...

  3. Java访问权限修饰符public protected friendly private用法总结(转载好文Mark)

    首先声明:Java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly.为了条理清晰,分三种不同情况来总结. 一 访问权限修饰符修饰成员变量和 ...

  4. Java 访问权限修饰符以及protected修饰符的理解

    2017-11-04 22:28:39 访问权限修饰符的权限 访问修饰符protected的权限理解 在Core Java中有这样一段话“在Object类中,clone方法被声明为protected, ...

  5. java四种访问权限修饰符

    java中四个访问权限修饰符: public(公开的).protected(受保护的).default(默认的).private(私有的). 它们决定了紧跟其后被定义的东西的使用范围. 适用范围< ...

  6. Java语言中的访问权限修饰符

    一个Java应用有很多类,但是有些类,并不希望被其他类使用.每个类中都有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用.如何能做到访问控制呢?就需要使用访问权限修饰符. Java语 ...

  7. Java中类成员访问权限修饰符(public、protected、default、private)

    1.public(公共的): 任何类都可以进行访问(最不严格). 2.protected(保护的): 同一包内的类以及其子类可以进行访问. 3.default(缺省的): 类中不加任何访问权限限定的成 ...

  8. 【转】C#访问权限修饰符

    C#访问权限修饰符 C#中类及类型成员修饰符有以下四类:public,private,protected,internal. public        类及类型成员的修饰符 private 类型成员 ...

  9. java访问权限修饰符

    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...

随机推荐

  1. js 实现排序算法 -- 选择排序(Selection Sort)

    原文: 十大经典排序算法(动图演示) 选择排序(Selection Sort) 选择排序(Selection-sort)是一种简单直观的排序算法.它的工作原理:首先在未排序序列中找到最小(大)元素,存 ...

  2. Protocol Buffers学习(4):更多消息类型

    介绍一下消息的不同类型和引用 使用复杂消息类型 您可以使用其他消息类型作为字段类型.例如,假设你想在每个SearchResponse消息中包含Result消息,您可以在同一个.proto中定义一个Re ...

  3. MobX中@computed和自定义get函数的区别

    首先这两者解决方法都会得到一个相同的结果,但使用@computed的意义在于它能够由MobX进行更智能的优化. 如果我不使用computed属性,直接使用自定义的getTheValue函数的话,那么一 ...

  4. Jennifer Chayes: 生活始终在你手中

    Jennifer Chayes ​​听到Mark Kac.Freeman J. Dyson.林家翘,或者是David I. Gottlie.BerndSturmfels和Sir John Ball等 ...

  5. loadrunner通过web的post请求方法测接口 2

    模拟APP发送请求给Cloud, 一般都是用户登录后.cloud会返回登录成功的消息并且返回一个cookie给app, app下次要做一些例如设置名称之类的工作,在请求消息里面会携带返回的cookie ...

  6. 解密JDK8 枚举

    写一个枚举类 1 2 3 4 5 6 public enum Season { SPRING, SUMMER, AUTUMN, WINTER } 然后我们使用javac编译上面的类,得到class文件 ...

  7. React使用笔记2--创建登录组件

    文章目录 最近在学习使用React作为前端的框架,<React使用笔记>系列用于记录过程中的一些使用和解决方法.本文记录搭建登录页面的过程. 根据产品规划划分模块 主要页面逻辑 在这里,本 ...

  8. 天哪!毫无思绪!令人感到恐惧的数学(水题?)(TOWQs)

    这道题的题目描述灰常简单,第一眼看以为是一道十分水的题目: 但是!!!(我仔细一看也没有发现这背后隐藏着可怕的真相~) 下面给出题目描述: 给出一个整数x,你可以对x进行两种操作.1.将x变成4x+3 ...

  9. 学习日记:Python爬虫-1

    这几天在b站看小甲鱼的python3教程,照着写了个有道翻译的程序 代码中字典data中的内容,用浏览器审查元素,先随便输一个要翻译的,找到跳出来的post的那个网址,看formdata就行了 返回的 ...

  10. 高性能内存队列Disruptor--原理分析

    1.起源     Disruptor最初由lmax.com开发,2010年在Qcon公开发表,并于2011年开源,其官网定义为:"High Performance Inter-Thread ...