构造方法

单例模式---恶汉模式

限于喜欢 提交于 2019-11-27 19:44:36
单例模式 package single;​public class Monitor { //开始没有班长,用静态属性表示 private static Monitor monitor=null; //构造方法私有化,防止出现多个班长对象 private Monitor(){}; public static Monitor getmonitor(){ if(monitor==null){ monitor=new Monitor(); } return monitor; }} 首先班里没有班长,用静态属性表示. 将班长类中的班长属性私有化,防止在其他地方实例化,出现多个班长对象. 定义一个获取班长的方法,没有就new一个,有的话就返回已有对象. 以上代码看起来逻辑正确,但是学习过多线程就能够知道,该类存在线程安全问题. 现在有线程A,B,全部在monitor=null的情况下进入方法体中,这样就会有两个班长对象产生,显然是不对的,那么我们让代码更新一下 package single;​public class Monitor { //开始没有班长,用静态属性表示 private static Monitor monitor=null; //构造方法私有化,防止出现多个班长对象 private Monitor(){}; public static synchronized Monitor

构造方法与成员方法

巧了我就是萌 提交于 2019-11-27 19:14:13
在P5“反射概述”中,老师的例子提到了构造方法、成员方法,两者的区别如下: 构造方法 1.构造方法没有返回值,方法名和类名相同 2.在NEW一个类时,构造方法会被 自动 调用 3.构造方法的作用是做一些变量的初始化,或在创建这个类时必须调用的一些方法和运算 成员方法 1.成员方法实现对类中成员变量的操作和功能的实现 2.成员方法由类的实例(某个对象)进行调用 来源: https://www.cnblogs.com/Additcd/p/11373757.html

java的Io流机制的学习

穿精又带淫゛_ 提交于 2019-11-27 18:48:10
IO流机制 File类的使用 File类的构造方法 File(URI uri) File(String pathname) File(File parent, String child) File(String parent, String child) File类的常用方法 boolean exists():判断文件是否存在 boolean createNewFile() :创建一个新文件,只能创建一个文件,不能创建目录(文件夹),创建时先判断文件 是否存在 ,不存在则创建并返回true, 存在则返回false. File getAbsoluteFile() File 类型的绝对路径File文件形式,相当于 File file =new File(绝对名称), String getAbsolutePath() String类型的绝对路径的字符串形式 String getName() : 获取的是路径的最后一级的名称 String getPath() //获取的是相对路径的名称:打File对象事调用的就是getPath()方法 String Parent() //返回当前文件的上一级目录,若没有上一级目录返回null bolean isDirectory() //判断是否是文件 bolean isFile() //判断是否是文件夹 bolean delete()/

JAVA面向对象笔记

橙三吉。 提交于 2019-11-27 18:36:56
类class 将一类事物的特征和动作,封装为属性和方法(封装相关数据,方法代码); 封装 实例,一个具体的个体(new创建) 可以保存独立的数据,独立控制执行指定方法; 引用 保存一个实例的地址 引用特殊值null 局部代码块: 在方法中提供一个{}. 局部代码块可以提高栈内存的效率,可以提前释放局部的变量内存。 构造方法 构造代码块:会在每一次创建对象时调用,构造代码块是先与构造方法执行的 使用方式:直接在类中提供一个{} 新建实例时执行,子类调用父类的无参构造方法 class定义类必须要有构造方法 不定义,默认为无参 构造方法作用:任意 常用方法:赋值 this 1.this.属性名---本类里的成员变量,当变量名重复时使用 2.this.方法名------本类的方法名 3.This(……)----本类里的构造方法,减少代码重复 This()只能用在构造方法中的第一行 Overload 方法重载:一个方法有多种参数传递方式 同名不同参数, 继承: 把原有类中的公共的代码抽取到一个新类中,原有类和新类使用extends关键字进行联。新类称之为父类,原有类称之为子类,子类会继承父类的所有属性和方法。但是子类只能使用对子类可见的属性和方法。 JAVA只支持单继承,只能继承一个父类,一个父类可以有多个子类 不继承父类的部分 构造方法 私有成员 private 子类实例

java构造方法

点点圈 提交于 2019-11-27 18:36:20
构造方法 1.构造方法的名字必须和类名一致。 2.构造方法没有返回值。 3.当我们没有显示的定义一个构造方法时,系统会添加一个公共的不带参的方法。 4.在我们使用new创建对象是会调用构造方法。 5.构造方法的作用是为了初始化对象中的属性。 代码理解: public class Student { int id; String name; int age; String sex; //创建构造方法 public Student(int _id, String _name, int _age, String _sex) { System.out.println("Student构造方法!!"); id = _id; name = _name; age = _age; sex = _sex; } void eat() { System.out.println(name + "吃炸鸡!!!"); } } 测试类: public class Test { public static void main(String[] args) { /* * 1.在栈空间分配了一个空间s1 * 2.在堆空间分配了一个空间 * 2.1 在我们使用new分配空间时,就会调用构造方法 * 3.使用栈空间的变量(对象)指向堆空间分配的内存地址 * 4.同过对象给堆空间进行赋值 * */ Student stu

封装、继承、多态

无人久伴 提交于 2019-11-27 18:35:49
一、封装 1、封装的好处:[1] 隐藏 类的实现细节, 保证数据的安全性。         [2] 不允许外部程序直接访问,而通过统一 的方式 (setter/getter)对隐藏信息的操作和访问         [3] 方便 加入 校验 控制逻辑         [4] 方便后期维护。 2、封装的步骤:[1] 属性私有化。修改属性的修饰符为private。         [2] 提供共有的setter/getter方法。对属性进行读写。         [3] 在setter/getter中加控制逻辑。对写入的数据进行正确性校验。 二、 静态常量 被static final修饰的量,称为静态常量,归类所有。一般用于存储不会经常发生变化的量。 三、 包 使用关键字package创建一个包。package必须写到源代码第一句。 1、包的好处:[1] 解决类的命名冲突问题。        [2] 便于管理        [3] 涉及包访问权限,更好的保护类、属性、方法。 2、包的命名规则:[1] 包名用小写字母,不能以.开头和结尾。          [2] 包名一定要唯一。          [3]包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。e.g:com.baidu 3、编译带包的类:javac –d 目标地址 源文件 e.g:包com.bd下的Test.java文件

java面向对象

谁说我不能喝 提交于 2019-11-27 16:43:17
面向对象 面向过程:更注重操作的步骤 (微观) 面向对象:更注重的参与者(宏观) 类和对象的关系: 类是抽象的,对象是具体的 类是对象类型,对象是类的实例 编写类:类名,属性,方法 使用类:创建对象,给属性赋值,调用方法 成员变量与局部变量的区别 区别 成员变量 局部变量 位置不同 类中,方法外 方法里,方法的形参,代码块里 作用范围不同 整个类,整个类中的所有方法均可以使用 只限于当前方法,或者当前语句块 内存的存放位置不同 存储在堆内存 存储在栈内存 有无默认值 有默认值 没有默认值 构造方法(构造器) 1.方法名必须与类名相同 2.不能写返回值,也比能写void,更不能使用return 3. 构造方法可以重载 构造方法与成员方法的区别 区别 构造方法 成员方法 作用不同 用于创建对象,并给属性初始化 描述对象所具有的行为 调用/使用方式不同 使用new关键字调用 使用对象名调用 执行顺序不同 先执行构造方法创建对象 然后使用对象名去调用成员方法 是否开空间 每执行一次都将在堆中开一个空间 可以被同一个对象调用N多次,调用一次加载到栈内存一次,执行完出栈 this关键字 this代表的是当前对象的引用(地址) 作用: (1)使用本类的属性 this.属性,, this可以省略不写 (2)使用本类的中方法 this.方法(),this可以省略不写 (3)调用本类的其它构造方法

面向对象、类

最后都变了- 提交于 2019-11-27 16:34:38
一、 类和对象的关系 类是对象的抽象,不占用内存,表示群体概念,它是一组具有相同属性和方法的对象的集合; 对象是类的具体实例,用来描述客观事物的一个实体,由一组属性和方法构成,表示个体概念,具有唯一性和独立性,占用存储空间。 二、 面向对象和面向过程 两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。 ①编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。 ②封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。 ③面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显。 三、 方法重写与重载的关系 方法重载:同一个类中,方法名相同,参数列表不同,与修饰符、返回值、抛出异常都无关。 方法重写:存在继承关系的两个类中,方法名相同,参数列表相同, 修饰符不能严于父类, 返回值、抛出的异常 要么 和父类相同 、要么 是其 ( 父类 的 ) 子类。 四、类的构造方法 构造 方法: 专门 用于构造对象,通常和 new 搭配使用 。构造 方法在形式上没有返回值(实质上返回this) ,方法 名和类名 一致 。 构造方法 分为有参构造 方法 和无参构造 方法 。 1、 若在类中 没有显示的 定义无参 构造方法,

java中的堆栈问题

*爱你&永不变心* 提交于 2019-11-27 16:19:56
本篇博客是听尚学堂高淇老师讲课所做笔记,如需转载请注明出处! java虚拟机内存分为:堆(heap)、栈(stack)、方法区(method area) 栈 :方法执行的内存模型(属于线程私有,不属于线程共享) 特点:先进后出,后进先出(和子弹夹一样),栈存储局部变量。栈由系统自动分配,速度快!栈是一个连续的内存空间 堆 :存放创建好的对象和数组(数组也是对象)(new出来的对象存放在堆中) JVM中只有一个堆空间,它被所有线程共享 堆是一个不连续的内存空间,分配灵活,速度慢! 方法区 :(静态区) jvm只有一个方法区,被所有线程所共享 方法区其实也是堆,只是用于存储 类、常量 相关的信息 用来存放程序中永远是不变或者唯一的内容(类信息【class对象】、静态变量、字符串常量等) 构造器: 1、要通过new关键字调用 2、构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值 3、如果没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加 4、 构造器的方法名必须和类名保持一致! 垃圾回收器 (GC) 回收过程:1.发现无用的对象 2.回收无用的对象 垃圾回收相关算法:1.引用计数法:堆中每个对象被引用一次,计数加1,被应用变量值变为null,计数减1,直到计数为0,则变成无用对象。优点

【翻译】C#编程语言和JAVA编程语言的比较(上)

我的未来我决定 提交于 2019-11-27 15:46:50
【翻译】C#编程语言和JAVA编程语言的比较(上) 原文地址: http://www.25hoursaday.com/CsharpVsJava.html 简介 C#语言是一门面向对象的语言,开发者可以使用C#和微软.NET平台快速构建各种应用程序。C#和.NET平台的目标是把开发者从一些诸如内存管理、类型安全问题、底层类库、数组边界检查等等的底层问题中解放出来并节约大量的时间,这样开发者就可以真正把时间和精力放在他们的应用程序和业务逻辑上。对于Java开发者来说,把前面那句话的开头改为“Java语言和平台”,这句话也同样可以总结Java语言和平台。 后面的内容介绍了C#和Java编程语言的异同,这些都是基于我使用两个语言的经历。所有代码都经过微软.NET框架2.0以及Java SE 6的测试。 注意:作者有些代码不符合.NET 3.5或JAVA SE 7(或以上)版本的最佳实践写法并且也不能覆盖它们所提供的新语法和新特性,但不影响本文的重点也就是平台的比较。 第一部分:C#和JAVA基本一致的地方 1、我们都是Object C#的类层次中有一个根,也就是所有C#的类都是System.Object的子类,Java也是这样,所有类都是java.lang.Object的子类。两个语言的Object类的方法有些相同(比如System.Object的ToString()和java.lang