类对象

理解 Java 多线程

六月ゝ 毕业季﹏ 提交于 2020-01-19 00:57:29
并发与并行 并发:指两个或多个事件在同一时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)。 进程与线程 进程: 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。 线程: 线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。 简而言之: 一个程序运行后至少有一个进程,一个进程中可以包含多个线程。 线程调度 分时调度: 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。 抢占式调度: 优先让优先级高的銭程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。 Java中的主线程 主线程:执行主(main)方法的线程。 单线程 单线程:Java程序中,只有一个线程,执行从main方法开始,从上到下的执行。 举例 public class Student { public static void method1() { for (int i = 0; i < 5; i++) { System.out.println("我正在执行Student的方法1"); } }

补充:面试常见的问题之 Java 基础

﹥>﹥吖頭↗ 提交于 2020-01-18 14:52:04
一、Object 常用的方法 public native int hashCode(): 返回散列值。 public boolean equals(Object obj): 比较两对象是否相等。 protected native Object clone() throws CloneNotSupportedException: 创建并返回此对象的副本。 public String toString(): 一般要重写这个方法,重写后返回的是对象的字符串表示形式。 public final native Class<?> getClass(): 返回此 Object 的运行时类。 protected void finalized() throws Throwable{}: 当垃圾收集确定没有对该对象的更多引用时,由对象上的垃圾收集器调用。 public final native void notify(): 唤醒正在此对象监视器上等待的单个线程。 public final native void notifyAll(): 唤醒正在此对象监视器上等待的所有线程。 public final native void wait(long timeout) throws InterruptedException: 导致当前线程等待,直到另一个线程调用此对象的 notify() 方法或

python学习笔记:(十四)面向对象

ε祈祈猫儿з 提交于 2020-01-18 02:51:54
1 、类( class ):   用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法 2 、类变量:   类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 3 、数据成员:   类变量或者实例变量用于处理类及其实例对象的相关的数据。 4 、方法重写:   如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖( override ),也称为方法的重写 5 、继承:   即一个派生类( derived class )继承基类( base class )的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。 6 、实例化:   创建一个类额实例,类的具体对象。 7 、方法:   类中定义的函数。 8 、对象:   通过类定义的数据结构实例。帝乡包括两个数据成员(类变量和实例变量)和方法。 一、类定义   class classname:     statement-1     ....   类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。 二、类对象   类对象支持两种操作:属性引用和实例化   属性引用使用和 Python 中所有的属性引用一样的标准语法: obj.name   类对象创建后,类命名空间中所有的命名都是有效属性名。  

day12 Java基础二阶段 -内部类&API

谁说我不能喝 提交于 2020-01-17 11:53:07
1. 参数传递 1.1 类名作为形参和返回值(应用) 1、类名作为方法的形参 方法的形参是类名,其实需要的是该类的对象 实际传递的是该对象的【地址值】 2、类名作为方法的返回值 方法的返回值是类名,其实返回的是该类的对象 实际传递的,也是该对象的【地址值】 示例代码: class Cat { public void eat ( ) { System . out . println ( "猫吃鱼" ) ; } } class CatOperator { public void useCat ( Cat c ) { //Cat c = new Cat(); c . eat ( ) ; } public Cat getCat ( ) { Cat c = new Cat ( ) ; return c ; } } public class CatDemo { public static void main ( String [ ] args ) { //创建操作类对象,并调用方法 CatOperator co = new CatOperator ( ) ; Cat c = new Cat ( ) ; co . useCat ( c ) ; Cat c2 = co . getCat ( ) ; //new Cat() c2 . eat ( ) ; } } 1.2 抽象类作为形参和返回值(理解)

Java 基础笔记 对象的向上转型和向下转型

橙三吉。 提交于 2020-01-17 00:40:45
1.向上转型:本质是多态的体现 格式:父类名称 对象名 = new 子类名称(); Animal animal = new Cat(); 含义:右侧创建一个子类对象,把它当成父类来看待使用。 创建一支猫,把它当成动物来看。 注意事项:向上转型一定是 安全的 。从小范围转到了大范围,从小范围的猫向上转型为更大范围的动物。 2.向下转型:本质是对象的 还原 过程 格式:子类名称 对象名 = (子类名称)父类对象; 含义:将一个父类对象强制转换成子类对象并用一个子类对象名接收。 注意事项: ①若对象本来创建时是猫,然后向上转型,向下转型为猫不会报错。 //猫、狗都是动物接口的实现类 Animal animal = new Cat();Cat cat = (Cat)animal; //此写法 正确 ②若对象本来创建时是猫,然后向上转型,若向下转型成狗会报错。 ////猫、狗都是动物接口的实现类 Animal animal = new Cat(); Dog dog = (Dog)animal; //此写法 错误 来源: CSDN 作者: 一名小白的进阶之路 链接: https://blog.csdn.net/qq_40275740/article/details/104010151

通过应用程序域AppDomain加载和卸载程序集

社会主义新天地 提交于 2020-01-16 05:12:50
微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外。车门的钥匙只有一把,若要获得还需要你费一些心思。我在学习Remoting的时候,就遇到一个扰人的问题,就是Remoting为远程对象仅提供Register的方法,如果你要注销时,只有另辟蹊径。细心的开发员,会发现Visual Studio.Net中的反射机制,同样面临这个问题。你可以找遍MSDN的所有文档,在Assembly类中,你永远只能看到Load方法,却无法寻觅到Unload的踪迹。难道我们装载了程序集后,就不能再将它卸载下来吗? 想一想这样一个场景。你通过反射动态加载了一个dll文件,如今你需要在未关闭程序的情况下,删除或覆盖该文件,那么结果会怎样?很遗憾,系统会提示你无法访问该文件。事实上该文件正处于被调用的状态,此时要对该文件进行修改,就会出现争用的情况。 显然,为程序集提供卸载功能是很有必要的,但为什么微软在其产品中不提供该功能呢?CLR 产品单元经理(Unit Manager) Jason Zander 在文章 Why isn't there an Assembly.Unload method? 中解释了没有实现该功能的原因。Flier_Lu在其博客里( Assembly.Unload )有详细的中文介绍。文中介绍了解决卸载程序集的折中方法。Eric Gunnerson在文章《 AppDomain

day10_接口丶多态

折月煮酒 提交于 2020-01-16 02:09:51
接口 概述 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。接口的定义,它与定义类方式相似,但是使用 interface 关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。引用数据类型:数组,类,接口。接口的使用,它不能创建对象,但是可以被实现( implements ,类似于被继承)。一个实现接口的类(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。 接口就是多个类的公共规范。 定义接口 根据JDK版本的不同,接口中可以定义的内容也不同。现在的接口中可以定义下列内容 格式: public interface 接口名称 {    //常量   // 抽象方法   // 默认方法   // 静态方法   // 私有方法 } 任何版本中,接口可以包含的内容有: 常量 抽象方法 定义常量 接口当中也可以定义“成员变量”,但是必须使用public static final三个关键字进行修饰。从效果上看,这其实就是接口的【常量】。 格式: public static final 数据类型 常量名称 = 数据值;

Java_7面向对象的三大特征

做~自己de王妃 提交于 2020-01-15 16:48:37
一、封装(模块化) 1.问题的引入: 当我们创建一个类的对象后,可以通过对象.属性的方式,对对象进行赋值。 这里,赋值操作受到属性的数据类型和存储范围的制约,除次之外,没有其他制约条件。 但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件,这个条件又不能在属性声明时体现 ,我们只能通过一个public 方法对属性进行限制条件的添加(get(),set()) 同时,我们需要避免用户再使用“对象.属性”进行赋值,则需要将属性声明为私有化。 --》此时,针对属性就体现了封装。 2.封装的思想 (1)类的内部数据操作细节自己完成,不允许外部干涉。仅对外暴露少量的方法用于使用 (2)隐藏对象内部的复杂性。只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。 (3)封装性的设计思想:把该隐藏的隐藏起来,该暴露的暴露出来 例如: public class Animal{ int age;//年龄可能被赋为负数,不符合实际 int legs;//腿有可能被赋为负数或奇数个,不符合实际 } 所以可以给属性设置一个get()和set()方法,来添加限制条件,并获取和设置相应的属性值,如下: public class Animal{ private int age; private int legs; //对属性的设置 publci void setAge(int age){

day09_继承、super、this、抽象类

谁说我不能喝 提交于 2020-01-15 07:19:44
继承 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示: 其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。 继承描述的是事物之间的所属关系, 这种关系是: is-a 的关系。 例如,图中兔子属于食草动物,食草动物属于动物。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。 在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当做父类看待。 定义 继承: 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。 好处 提高代码的复用性。 类与类之间产生了关系,是多态的前提。 继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下: 继承演示,代码如下 定义父类 package demo01; class Employee { // 定义name属性 String name; // 定义员工的工作方法 public void work() { System.out.println("尽心尽力地工作"); } } 定义子类 package demo01; /** * 定义讲师类Teacher 继承 员工类Employee */

Java基础----------内部类

冷暖自知 提交于 2020-01-14 23:14:02
Java中的几种内部类 一、内部类种类 成员内部类 、局部内部类、 静态内部类 、匿名内部类 二、使用内部类的好处 利用内部类可以实现双继承,内部类加外部类包装可隐藏不想让人知道的内容即加强封装 三、成员内部类 定义在一个类的内部的,与成员同等级的 成员内部类中 不允许定义静态变量 ,一般定义的时候权限为 缺省的 可以之间访问 外部类的所有成员 ,当所访问的成员跟内部类中定义的成员名字一样时要 外部类.this.名字 这样访问 可以访问外部类的所有方法,但是静态方法的访问要使用静态的访问方式即 类名.方法名 外部类不能之间访问内部类的成员,只能利用 内部类对象 来进行访问 在外部类的 非静态方法 中创建成员内部类对象的时候,直接new 成员内部类即可;如 内部类 变量 = new 内部类() ; 对于在 其他位置(静态方法,main方法和同包其他类中等) 创建内部类对象时要利用外部类对象才能进行创建;如 外部类.内部类 变量 = 外部类对象.new 内部类() ; 注意在其他包中不能利用这语法来创建成员内部类,因为这关于内部类中权限问题 四、静态内部类 定义在类内部的并使用 static关键字 修饰的类 可以定义 静态变量 ,权限有四种但一般为缺省的 静态内部类 只能访问外部类的静态成员 ,注意不能访问非静态成员(成员包括变量和方法),访问静态变量的时候如果同名要使用类名来说明