文献来源:<JAVA核心技术卷Ⅰ>,第4章第5节 (没有相关书籍的可看传送门) ps:测试demo因为偷懒,用的是String对象 结论:Java使用的是对象的值引用.即将任何对象所在内存地址的值,先进行了一份拷贝,然后进行的值操作,而非直接指向其内存地址. package utils; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @AllArgsConstruct…
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数的所属对象的引用.         简单说,哪个对象调用了this关键字所在的函数,this就代表哪个对象. 1.区别局部变量和成员变量 内存图解: 说明: 程序执行到main函数时,main函数进入栈内存中的方法区,执行到Person p = new Person("旺财");时,在ma…
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数的构造函数 如果在类中定义了构造函数,那么类中的默认构造函数就没有了 构造函数在创建对象时调用 构造函数也有默认的return语句(省略不写) 函数执行到return语句后,栈中该函数的方法区就会出栈 如: class Person{ private…
1.创建多线程方式1——继承Thread类. 步骤:  A:自定义类MyThread继承Thread类.  B:MyThread类里面重写run()? 为什么是run()方法呢? C:创建对象 D:启动线程 /* 方式1:继承Thread类. * 步骤 * A:自定义类MyThread继承Thread类. * B:MyThread类里面重写run()? * 为什么是run()方法呢? * C:创建对象 * D:启动线程 */ public class MyThread extends Threa…
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note3.html,转载请注明源地址. 1.面向对象的程序设计方法概述 面向对象的程序设计 与结构化程序设计方法相比,更符合人类认识现实世界的思维方式,已成为程序设计的主流方向 涉及的主要概念:抽象.封装.继承.多态 对象 现实世界中:万物皆对象,都具有各自的属性,对外界都呈现各自的行为 程序中:一切都是对象,都具有标识 (identity), 属性和行为(方法),通过一个或多个变量来保存其…
Java中有很多类是很常用的,此处列举System,Runtime,Date,Calendar,Math System System:类中的方法和属性都是静态的 字段摘要 static PrintStream err "标准"错误输出流 static InputStream in "标准"输入流 static PrintStream out "标准"输出流 获取系统属性信息:Properties getProperties(); import j…
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问超类中被子类的某个成员隐藏的成员: 例:使用super调用超类的构造函数 矩形实体代码: public class Rectangular { private double width; private double height; Rectangular(double w,double h){ w…
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Java中的定时调度工具 Timer Quartz 两者主要区别 出身上,Timer是Java提供的原生Scheduler(任务调度)工具类,不需要导入其他jar包:而Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现. 功能上,如需要实现在某个具体时间执行…
Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Exception类 Java中"万物皆对象",异常也不例外, Java把异常当做对象来处理,并将异常分为两大类--Error(错误)和Exception(异常),它们都是Throwable类的子类. 这里看起来可能有点奇怪,什么叫"把异常分为错误和异常两类"??可以这样粗…
static关键字用处 用于修饰成员变量和成员函数 被修饰后的成员具有以下特点: 随着类的加载而加载 优先于对象存在 被所有对象所共享 可以直接被类名调用 使用注意 静态方法只能访问静态成员:非静态方法也可以访问静态成员 静态方法中不可以写this,super关键字 主函数是静态的 实例变量(成员变量)和类变量(静态变量)的区别 生命周期不同 成员变量随着对象的创建而存在,随着对象的回收而释放: 静态变量随着类的加载而存在随着类的消失而消失 2.   调用方式不同 成员变量只能被对象调用    …
1.面向对象概述 面向对象是java语言的核心.是对应于面向过程而言的. 面向过程:强调的是过程,即动作.在java中动作就是函数.C语言就是面向过程的. 如:把大象装进冰箱需要几步? 答:需要三步: 打开冰箱 把大象装进去 关上冰箱 我们把上面的问题,用面对对象的思想来考虑. 我们把冰箱作为一个对象,它具备打开,存储,关闭的功能.这个时候,我们就只需要冰箱这个对象就可以完成把大象装进冰箱中.即,冰箱打开,存储,冰箱关闭. 面向对象的特点: 面向对象是一种常见的思想,符合人们的思考习惯. 面向对…
1.函数 1.什么是函数? 定义在类中的具有特定功能的一段独立小程序. 函数也叫做方法 2.函数的格式 修饰符   返回值类型    函数名(参数类型  形式参数1, 参数类型  形式参数2-) {           执行语句(函数体);           return 返回值;       } 返回值类型:函数运行完成后输出的数据类型. 参数类型:是形式参数的数据类型. 形式参数:是一个变量,用于储存调用函数时传递给函数的实际参数. 实际参数:传递给形参的实际数据. return:结束函数…
今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类. public class Animal { private String name; private int id; public Animal(String myName, String myid) { //初始…
java基础 一.java语言跨平台原理 1.什么是跨平台? 跨平台就是一个软件可以在不同的操作系统中运行,但是不需要对其修改.换句话说,java语言编写的软件在不做修改的情况下就能在不同的系统平台上运行 2.跨平台的原理 java程序依靠JVM运行,与操作系统无关,因此,我们只需在任意操作系统中安装一个JVM,由JVM来负责java程序的运行 3.跨平台图解 注意:Java语言是跨平台的,是因为Java应用程序需要Java虚拟机JVM负责运行. 而Java虚拟机JVM是不跨平台的,不同的操作系…
基础常识 软件:一系列按照特定顺序组织的计算机数据 和指令的集合 常见的软件: 系统软件:如:DOS,windows,Linux等 应用软件:如:扫雷,迅雷,QQ等 软件的出现实现了人与计算机之间的更好的交互 交互方式: 图形化界面:这种方式简单直观,使用者易于 接受,容易上手操作 命令行方式:需要有一个控制台,输入特定的 指令,让计算机完成一些操作.较为麻烦,需 要记录住一些命令 dos命令行常见的命令 dir: 列出当前目录下的文件以及文件夹 md: 创建目录 rd: 删除目录 cd: 进入…
如果有一个A类. 1.例如以下表达式: A  a1 = new A(); 那么A是类,a1是引用.new A()是对象.仅仅是a1这个引用指向了new A()这个对象. 2.又如: A  a2; A代表类,a2仅仅是一个引用,仅仅是a2指向的对象为空NULL. 3.再如: a2 = a1: 它代表的是a2是一个引用,a1也是一个引用:在这个过程中a1所指向对象的地址传给了a2,使得a2.a1指向同一对象. 4.引用 如以下代码片段: int  k; // base data type A  a;…
System类 package p1; import java.util.Properties; import java.util.Set; public class SystemDemo { private static final String LINE_SEPARATOR = System.getProperty("line.separator"); //设置换行 public static void main(String[] args) { /* * System:类中的方法…
1.类是对象的抽象,对象是类的实例. 2.一个.java 文件,只能有一个公有类. 3.Java的默认访问权限是:default,即不加任何访问修饰符,该权限设置只能在同一包访问.   当前类 同一包 子孙类 其他包 public √ √ √ √ protected √ √ √   default √ √     private √       4.成员变量最好设为private,方法则为public:protected少用,其安全性不好. 5.成员变量与局部变量: 5.1.局部变量比成员变量拥…
物以类聚,人以群分,我们把具有相似特性或品质的物体归为一类. 类:类是一种模板,它描述一类对象的行为和状态. 对象:对象是类的一个实例,有状态和行为. 比如在一支nba球队中,每个球员都有球衣号码,场均得分,司职位置.每个球员都有共同的行为打篮球.那么我们可以抽取出一个篮球运动员的类 ​ 类的定义 在java语言中,使用class关键字来定义一个类 package lesson; public class Player { } 这样就定义了一个类,public是访问修饰符,表示这个类可以在其他地…
一.多线程 首先我们要清楚程序.进程.线程的关系. 首先进程从属于程序,线程从属于进程. 程序指计算机执行操作或任务的指令集合,是一个静态的概念. 但我们实际运行程序时,并发程序因为相互制约,具有“执行——暂停——执行”的状态, 显然这时程序这个静态的概念无法描述这种状态,从而人们引入了进程这个动态的概念分析研究程序的活动. 目前国内对进程的定义:进程是指一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 而线程从属于进程,线程是比进程更小的活动单位,它是进程中的一个执行路径.一个进程可…
1.介绍面向对象的编程          面向对象是现在主流的编程样例,它替代了以前C语言使用时的“结构体”,Java是一门面向对象的语言,所以需要熟悉面向对象的概念.面向对象的程序由很多对象组成,每个函数对于用户而言,都有特殊的功能.程序里面的很多对象都可以直接从公共库里面拿来直接用.不用去研究这些功能怎么去实现的.传统的结构的编程由一系列算法步骤来解决问题.一旦这些步骤确定下来,也要同时确定存储数据的方式.也就是数据结构一开始学习的:算法+数据结构=程序. 先决定算法,再决定使用什么样的结构…
一般在编写代码时可能会遇到这样的场景--在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦.为了应对这种情况,Java中允许使用匿名对象和匿名内部类的方式来解决这个矛盾 匿名对象 普通的类对象在使用时会定义一个类类型的变量,用来保存new出来的类所在的地址.而匿名类取消掉了这个变量,这个地址由编译器来处理,并且在new出来之后,它占用的内存会有JVM自动回收掉.后续无法再使用了. 例如 public class Student{ pu…
java基础很重要, 今天呆家看java视频,顺便总结前几周看的java书籍,做一下简单的总结:1:数组的声明,2:数组的赋值: 3:数组的方法: 声明一个数组主要有两种方式: //类型 []数组名字; //类型 数组名字[]; int []arr; int arr[]; 定义数组也有两种方式: //声明有4个内存空间的数组: ]; //声明一个数组长度为4,对应的内容分别问1,2,3,4; ,,,} java的数组声明在赋值的时候数组长度就固定了,你不能更改的, 这点需要注意; 还有一种是声明…
一.覆盖equals时请遵守通用约定 1.满足下列任何一个条件时,不需要覆盖equals方法 a.类的每个实例本质上都是唯一的.此时就是Object中equals方法所表达的含义. b.不关心类是否提供了“逻辑相等”的测试功能 c.超类中覆盖的equals方法,使用于子类,不需要自己再覆盖了. d.类是私有或者包级私有,并确定equals方法永远不会被调用,可以不覆盖.或者覆盖equals方法,内容为抛出异常. 2.高质量equals方法的诀窍: a.使用==操作符检测“参数是否为这个对象的引用…
在HashMap中,如果需要使用多个属性组合作为key,可以将这几个属性组合成一个对象作为key.但是存在的问题是,要做get时,往往没办法保存当初put操作时的key object的reference,此时,需要让key object覆盖如下hashCode()和equals(Object obj)的实现.sample code如下: public class TestKeyObject { private long id; private int type; public TestKeyOb…
环境:WIN7 64位 +eclipse 2018 12version 具体方法:https://jingyan.baidu.com/album/9c69d48fefa53113c9024eb3.html?picindex=3…
2020.9.1 学习来自 https://www.liaoxuefeng.com/wiki/1252599548343744/1255883729079552 一.变量和数据类型 基本数据类型 基本数据类型是CPU可以直接进行运算的类型.Java定义了以下几种基本数据类型: 整数类型:byte,short,int,long 浮点数类型:float,double 字符类型:char 布尔类型:boolean 浮点类型: float f1 = 3.14f; float f2 = 3.14e38f;…
AWT:抽象窗口组件工具包 Abstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包.AWT 的主要优点是,它在 Java 技术的每个版本上都成为了一种标准配置,包括早期的 Web 浏览器中的 Java 实现:另外它也非常稳定.这意味着我们不需要单独安装这个工具包,在任何一个 Java 运行环境中都可以使用它,这一点正是我们所希望的特性. AWT包中最基本的关系是 组件.容器.布局管理器.事件之间的关系 容器类派生出  容器框架类(Frame) 面板类(Pa…
传值和传引用 When you're passing primitives into a method ,you get a distinct copy of the primitive. When you're passing a reference into a method , you get a copy of the reference. 以上引自<Thinging in Java>.总结一下就是无论Java參数的类型是什么.一律传递參数的副本. 在Java中,变量分为以下两类: 对…