自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 接口中的变量默认是public static final的

在interface里面的变量默认都是public static final 的,原因如下:1.接口是一种高度抽象的"模版",而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的.假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?2.接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量,但对应的方法却无法操作这些变量,虽然可以直接

2020-10-19 09:46:10 5936

转载 为什么一个java源文件中只能有一个public类

为什么一个java源文件中只能有一个public类问题:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答案:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。编译单元​ Java编程思想(第四版)(6.1 包:库单元)​ 当编写Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。每个编译单元都必须有一个后缀名.java,而在编

2020-09-17 13:50:54 825

原创 static的方法为什么不能被重写?

static的方法为什么不能被重写?一. 重写的目的是什么首先,重写的效果是什么:对于相同的方法,子类和父类要具有不同的行为,这使得子类的功能较父类来说有一定的扩展。但仅仅是扩展这么简单吗?这种效果使得重写允许了多态的实现,重写是多态实现的前提(之一)。即当一个父类的对象实际上引用了子类对象时,向该对象发送消息调用方法时,实际上调用的是子类重写过的方法。这才是重写的主要作用,而不是简单扩展。如果你一直使用一个子类的对象调用某个方法的话,那么子类和父类中的方法完全可以没有任何关系。重写使得子类和父类中

2020-09-17 09:37:47 3869 2

原创 复用类

复用类1. 复用类的两种主要方式:第一种方法非常直观:只需在新的类中产生现有类的对象。由于新的类是由现有类的对象所组成,所以这种方法称为组合。该方法只是复用了现有程序代码的功能,而非它的形式。第二种方法则更细致一些,它按照现有类的类型来创建新类。无需改变现有类的形式,采用现有类的形式并在其中添加新代码。这种神奇的方式称为继承,而且编译器可以完成其中大部分工作。当然还有第三种方式,这种方式被称为代理,不过Java并没有提供对它的支持。这是继承与组合之间的中庸之道。使用代理可以拥有更多的控制力,我们可

2020-09-16 13:10:19 287

原创 native关键字的理解

使用 native 关键字说明这个方法是原生函数,也就是这个方法是用 C/C++等非 Java 语言实现的,并且被编译成了 DLL,由 java 去调用。(1)为什么要用 native 方法java 使用起来非常方便,然而有些层次的任务用 java 实现起来不容易,或者我们 对程序的效率很在意时,问题就来了。例如:有时 java 应用需要与 java 外面的环境交互。这是本地方法存在的主要原因,你可以想想 java 需要与一些底层系 统如操作系统或某些硬件交换信息时的情况。本地方法正是这样一种交流机制:

2020-09-15 12:54:35 249

原创 对象是什么时候被创建的

1. 大部分人的直觉:new+构造方法首先我们思考一下我们如何创建一个对象,最普通的方式就是:new+构造方法。所以很正常,我们会认为做完这件事之后,一个对象就被创建了。其实这并没错,因为我们完成这件事之后我们就可以对该对象做各种操作:访问某些字段,调用某些方法等。但是这取决于,你怎么理解“创建对象”对象这件事。2. 构造方法其实是一个很矛盾的存在我们在构造方法中最常做的事情是这样的:public ClassA(int a) { this.a = a;}这里的this,指代的就是当前对象。但

2020-09-15 12:54:22 539

原创 区分重载方法

为什么要有重载:一个原因:方法名,不需要对每个概念都用不同的词汇另一个原因:构造器强制重载方法名。因为构造器的名字一定是类的名字,就只能有一个构造器名。想用多种方式创建一个对象,由于都是构造器,所以他们必须有相同的名字,即类名。而他们的参数不同,必须用到方法重载。方法签名:方法名+参数列表区分重载方法:每个重载方法都必须有一个独一无二的参数类型列表。甚至参数顺序的不同也足以区分两个方法,不过一般情况下不这么做,因为会使代码难以维护。基本类型的重载:5会被当做int处理,如果有某个重载方法接受i.

2020-09-14 16:09:58 2309

转载 JVM执行引擎: 中间语言翻译

这篇日志把JVM中的中间语言转换总结一下,看看从中间语言转换成机器码的方式是怎样的。方法是程序最基本的单元,由指令的集合组成,在Java里就是字节码的组合,即对字节码的封装,JVM在进入一个Java方法后,将每一条字节码指令取出,逐条按顺序执行,例如基本四则运算,与或非,左移右移等,不过JVM的方法调用不像CPU执行原子指令那样,直接跳到对应的方法代码段,而是先把Java代码编译成中间语言-字节码,接着在程序运行过程中动态将字节码指令解释成机器指令,所以JVM最后执行的就是一堆机器指令, 这样做的目的是实现

2020-09-13 10:26:58 367

转载 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?

在JAVA中,所有的对象都能够被作为‘监视器monitor’——指的是一个拥有一个独占锁,一个入口队列,和一个等待队列的实体entity。所有对象的非同步方法都能在任意时刻被任意线程调用,此时不需要考虑加锁的问题。而对于对象的同步方法来说, 在任意时刻有且仅有一个拥有该对象独占锁的线程能够调用它们。 例如,一个同步方法是独占的。如果在线程调用某一个对象的同步方法的时候,对象的独占锁被其他线程占有,那么当前线程将处于阻塞状态。并添加到对象的入口队列中。只有在调用线程拥有的某个对象的独占锁的时候,才能够调用该

2020-09-13 10:14:49 1760 2

转载 多线程总结

线程线程和进程的区别进程是一个可执行的程序,是系统资源分配的基本单位。线程是进程内部相对独立的可执行单元,是操作系统进行任务调度的基本单位。多线程的优缺点优点:充分利用多核多cpu的资源,提高cpu的使用率,提高了程序的运行效率。缺点:线程数过多会影响性能,操作系统会在线程切换之间增加内存的开销。存在线程同步和安全问题可能产生死锁增加了开发人员的技术难度线程有几种状态一共五种状态:分别是新建,就绪,运行,阻塞和死亡状态。详细见下图:新建状态:当用new创建一个线程时,

2020-09-09 14:10:23 163

转载 cookie, session, 和token

cookie, seesion, 和token在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。CookieCookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用Cookie实际上只能存储一小段的文本信息。例如:登录网

2020-08-31 17:08:04 130

转载 如何理解面向对象编程思想

作者:大宽宽链接:https://www.zhihu.com/question/305042684/answer/550196442来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。面向对象编程(OOP),是一种设计思想或者架构风格。OO语言之父Alan Kay,Smalltalk的发明人,在谈到OOP时是这样说的:I thought of objects being like biological cells and/or individual computers

2020-08-29 12:02:49 498

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除