构造器

精选21道Java后端面试题,看完你也能唬住面试官拿30K

拈花ヽ惹草 提交于 2020-02-03 01:03:51
如何用数组实现队列? 用数组实现队列时要注意 溢出 现象,这时我们可以采用循环数组的方式来解决,即将数组收尾相接。使用front指针指向队列首位,tail指针指向队列末位。 内部类访问局部变量的时候,为什么变量必须加上final修饰? 因为生命周期不同。局部变量在方法结束后就会被销毁,但内部类对象并不一定,这样就会导致内部类引用了一个不存在的变量。 所以编译器会在内部类中生成一个局部变量的拷贝,这个拷贝的生命周期和内部类对象相同,就不会出现上述问题。 但这样就导致了其中一个变量被修改,两个变量值可能不同的问题。为了解决这个问题,编译器就要求局部变量需要被final修饰,以保证两个变量值相同。 在JDK8之后,编译器不要求内部类访问的局部变量必须被final修饰,但局部变量值不能被修改(无论是方法中还是内部类中),否则会报编译错误。利用javap查看编译后的字节码可以发现,编译器已经加上了final。 long s = 499999999 * 499999999 在上面的代码中,s的值是多少? 根据代码的计算结果,s的值应该是-1371654655,这是由于Java中右侧值的计算默认是int类型。 NIO相关,Channels、Buffers、Selectors NIO(Non-blocking IO)为所有的原始类型提供(Buffer)缓存支持,字符集编码解码解决方案

Java基础:初始化块

五迷三道 提交于 2020-02-02 19:11:29
Java语言提供了很多类初始化的方法,包括构造器、初始化器等。除了这两种方法之外,我们还可以用 初始化块(initialization block) 来实现初始化功能。 基本语法 初始化块是出现在类声明中的语句块,它位于所有成员、函数、构造器之外。例如使用静态初始化块,我们的HelloWorld可以这么写: public class Hello { static { System.out.println("Hello, world!"); } public static void main(String[] args) { } } 初始化块的执行时机 首先,初始化器和初始化块会按照出现顺序依次执行。之后,构造器的代码开始执行。以下的示例包含了三种初始化的方式,并且刻意安排了顺序。 public class Init { Say hello = new Say("hello"); Say world = new Say("world"); { new Say("static block"); } Init() { System.out.println("Construction complete."); } Say bye = new Say("Bye!"); public static void main(String[] args) { Init i = new Init();

ARTS第七周打卡

允我心安 提交于 2020-02-02 17:24:17
1.Algorithm    https://leetcode-cn.com/problems/median-of-two-sorted-arrays/ 2.Review https://programtalk.com/java/top-corejava-interview-questions/ equals()和hashCode()使用时的约定规则。 equals()和hashCode()在集中中的使用。 List、Set、Map的特点和性能对比。 描述Java集合、接口和实现,LinkedList和ArrayList的区别是什么? 原始类型和包装器类型的区别?什么是自动装箱? final和static的用途及使用方法。 Java中的访问修饰符。 String、StringBuilder、StringBuffer之间的区别。 接口和抽象类之间的区别。 覆盖和重载之间的区别。 异常类型和"处理或声明"规则:异常类型有:Checked Exceptions、Error、Runtime Exceptions。 垃圾收集器是怎么工作的? 怎么使类不可变,这有什么意义? 什么是JIT编译? Java7/8有什么新特性?Java9又会什么呢? 3.Tips   kill -9 与 kill -15区别 1)(kill pid) 、( kill -15 pid)

结构和类的区别

旧巷老猫 提交于 2020-02-02 14:43:23
1、结构用于小的数据类型,所有结构派生自System.ValueType类,不能再继承其它基类,同时也不能被继承。 而类一般用于大的数据类型如人类,动物类等,支持继承。 2、结构和类一样可以有成员方法,字段。 3、结构中的成员字段不能被显式初始化,要通过默认无参构造器初始化,而类的字段可以显示初始化,默认由无参构造器初始化。 4、结构的无参构造器总是存在,无论是否手动添加了其它构造器,而类只要手工添加任一个构造器,就不会再有默认的无参构造器,当然可以自行添加,用于成员字段的初始化。 5、结构可以采用两种方式声明(和枚举enum相同): 第一种不使用new,和声明一般数据类型如int、string一样,假设有一个结构MyStruct,创建一个实例如下: MyStruct struct1; 第二种采用和实例化类一样的方式如MyStructnn=new MyStruct()。 6、 结构不能显式的包含无参构造器,也即是说不能手工添加一个无参构造器,而类在没有任何构造器的情况下会自动生成一个无参构造器,同样也可以手工添加一个无参构造器。 7、 结构不支持继承,任何其它结构或类不能由结构派生,而类则可以。 8、结构支持接口继承,不支持实现继承,就是说结构可以继承自某一个接口,但不能继承自某一个类或结构。 9、class与struct内部的成员的访问权限默认都是private私有的,这与C+

Java-继承

♀尐吖头ヾ 提交于 2020-02-02 03:57:30
Java 继承 继承是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为 类的继承格式 class 父类 { } class 子类 extends 父类 { } 继承的特性 子类拥有父类的非 private 的属性,方法 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展 子类可以用自己的方式实现父类的方法 Java的继承是单继承,但是可以多重继承,单继承就是子类只能继承一个父类,多重继承就是,A继承B,B继承C 提高了类之间的耦合性 继承关键字 extends 关键字,类的继承是单一继承,一个子类只能拥有一个父类,所以 extends 只能继承一个类 public class Animal { private String name; private int id; public Animal(String myName, String myId) { // 初始化属性 } public void eat() { // 吃东西方法的具体实现} public void sleep() { //睡觉方法的具体实现} } public class Penguin extends Animal{ } implements 关键字,使用 inplements 关键字可以变相的使Java具有多继承的特性

第五章简易笔记

一笑奈何 提交于 2020-02-01 17:12:25
第五章-继承 1. 继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求。 2.反射是指在程序运行期间发现更多的类及其属性的能力。 3.在java中所有继承都是公有继承。 4. 在子类中可以增加域、增加方法或覆盖超类的方法,然而绝对不能删除继承的任何域和方法。 5.this与super关键字用途总结: this用途: (1)引用隐式参数; (2)调用该类其他的构造器。 super用途: (1)调用超类方法; (2)调用超类构造器。 6.调用构造器的语句只能作为另一个构造器的第一条语句出现。构造器参数既可以传递给本类(this)的其他构造器,也可以传递给超类(super)的构造器。 7.一个对象变量可以指示多种实例类型的现象被称为多态,在运行时能够自动的选择调用哪个方法的现象称为动态绑定。 8.java不支持多继承。 9.在java中,对象变量是多态的。一个Employee变量既可以引用一个Employee类对象,也可以引用一个Employee类的任何一个子类对象。 10.不能将超类的引用赋给子类对象。例如:Manager m = staff[i];//error 原因:不是所有的雇员都是经理。 11. 动态绑定(弄清对象的执行过程): 1) 编译器查看对象的声明类型和方法名

[Java学习笔记] Java核心技术 卷1 第五章 继承

拥有回忆 提交于 2020-02-01 17:11:46
第5章 继承 利用继承,可以基于已存在的类构造一个新类。继承已存在的类就是复用(继承)这些类的方法和域。还可以在此基础上添加新的方法和域。 反射。 5.1 超类子类 使用extends构造一个派生类 class Manager extends Employee { 添加方法和域 覆盖:重写一些基类中不适合派生类的方法 } 所有的继承都是公有继承。即所有的公有成员和保护成员都保持原来的状态,基类的私有成员仍然是私有的。不能被派生类的成员访问。 (C++中私有继承或保护继承会将 公有成员和保护成员都变成派生类的私有成员或保护成员) 基类、父类、超类:被继承的类 派生类、孩子累、子类:新的类 使用super调用基类被覆盖的方法。super与this不同,仅是用来指示编译器调用超类方法的特殊关键字。 使用super调用基类的构造器 super(参数列表..);由于派生类不能调用基类的私有域,所有需要调用构造器对私有域初始化。 如果派生类没有显示调用超类构造器,则自动调用基类默认的构造器。如果超类没有不带参数的构造器又没有显式的调用超类的其他构造器,则Java编译器将报错。 class Employee { private double salary; public double getSalary(){...} public Employee(double x){...} } class

spring注解开发-IOC

此生再无相见时 提交于 2020-02-01 15:31:40
1. @Configuration, @Bean @Configuration该注解就是用来告诉spring这是配置类 @Bean该注解是用来注册一个bean。类型是返回值的类型,ID默认是用方法名作为ID的;可以在注解中指定ID,@Bean("person") ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class); //MainConfig.class是配置类 Person bean = applicationContext.getBean(Person.class); 以上注解主要是用来取代了配置文件application.xml中对bean的定义 2. @ComponentScan 该注解用于包扫描,主要是取代了下面的配置。主要扫描标记有以下注解的:@Controller、@Service、@Repository,@Component <context:component-scan base-package="com.atguigu" use-default-filters="false"></context:component-scan> 属性一:excludeFilters = Filter[]

一周目笔记---随时更新(随手记,如果有问题可以ctrl+f在我的这文档里找找看有没有相关的,相关词尽量少一些)

浪尽此生 提交于 2020-02-01 00:04:19
1.鲁棒性:计算机 软件 在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。 2.指针:在PHP中数组之间的赋值,并不像其他语言一样是通过指针的形式,传递地址,而是实打实地传递数据。在PHP中可以用&来引用数据。 3.html:HyperText Markup Language 超文本标记语言 css:Cascading Style Sheets 层叠样式表 js:JavaScript 一种直译式脚本语言 jQuery:是一个快速、简洁的JavaScript框架(js) php:Hypertext Preprocessor 超文本预处理器 HTTP:HyperText Transfer Protocol 超文本传输协议 4.https在http的基础上对传输的数据提供了加密的一个协议。 5.响应头里的 charset和html的mete标签里的charset都是告诉浏览器用什么编码方式解读数据,只不过mete标签里的charset在浏览器解析响应数据的时候是无效的,浏览器只以请求头的charset为准,默认是UTF-8。 6.json:JavaScript Object Notation 是一种类似于JS的字面量描述数据的手段。 (1)JSON中属性名称必须用双引号包裹 (2)JSON中字符串必须用双引号包裹 (3)JSON中不允许使用注释

小白学Java:内部类

别来无恙 提交于 2020-01-31 17:17:58
目录 小白学Java:内部类 内部类的分类 成员内部类 局部内部类 静态内部类 匿名内部类 内部类的继承 内部类有啥用 小白学Java:内部类 内部类是封装的一种形式,是定义在类或接口中的类。 内部类的分类 成员内部类 即定义的内部类作为外部类的一个普通成员(非static),就像下面这样: public class Outer { class Inner{ private String id = "夏天"; public String getId() { return id; } } public Inner returnInner(){ return new Inner(); } public void show(){ Inner in = new Inner(); System.out.println(in.id); } } 我们通过以上一个简单的示例,可以得出以下几点: Inner类就是内部类,它的定义在Outer类的内部。 Outer类中的returnInner方法 返回一个Inner类型的对象 。 Outer类中的show方法通过我们熟悉的方式创建了Inner示例并访问了其私有属性。 可以看到,我们像使用正常类一样使用内部类,但实际上,内部类有许多奥妙,值得我们去学习。至于内部类的用处,我们暂且不谈,先学习它的语法也不迟