- 1、何为编程?
- 2、Java有什么特点?
- 3、Java与C++的区别?
- 4、什么是Java注释?
- 5、什么是字节码?采用字节码的最大的好处是什么?
- 6、访问修饰符都有哪些?
- 7、&与&&的区别?
- 8、final有什么用?
- 9、final、finally、finalize的区别?
- 10、super关键字的用法是什么?
- 11、static存在的主要意义?
- 12、面向对象和面向过程
- 13、面向对象的特征说一下?
- 14、说一下抽象类与接口的区别与联系?
- 15、成员变量与局部变量的区别有哪些?
- 16、构造方法有哪些特性?
- 17、== 和 equals 的区别是什么?
- 18、为什么要有hashcode?
- 19、为什么重写equals时必须重写hashCode方法?”
- 20、为什么 Java 中只有值传递
- 21、java 中 IO 流分为几种?
- 22、BIO,NIO,AIO 有什么区别?
- 23、Files的常用方法都有哪些?
- 24、什么是反射机制?
- 25、字符型常量和字符串常量的区别
- 26、String 类的常用方法都有那些?
- 27、int 和 Integer 有什么区别?
总结的可能不是很到位,希望各位大佬多多指正。 1、何为编程?
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
2、Java有什么特点?简单易学、面向对象、可靠性、平台无关性、安全性、支持多线程
3、Java与C++的区别?①Java与C都是面向对象语言,都支持封装、继承和多态。
②Java的类是单继承,C++支持多继承,虽然Java的类不可以多继承,但接口可以多继承。
③Java不提供指针来直接访问内存,程序内存更加安全。
④Java有自动内存管理机制,不需要程序员手动释放无用内存。
用于解释说明的文字,常见的有
分类 单行注释 格式:// 注释文字 多行注释 格式: 文档注释 格式:5、什么是字节码?采用字节码的最大的好处是什么?
①字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class文件),它不面向任何特定的处理器,只面向虚拟机。
②采用字节码的好处?
在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。
Public:对所有类可见。使用对象:类、接口、变量、方法。
Protected:是受保护的,受到该类所在的包所保护。对同一包内的类可见。使用对象:变量、方法。注意:不能修饰类(外部类)。不能被不同包的类访问;如果有不同包的类想调用它,只能通过访问重新定义它的子类来访问。
Default(缺省):(即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
Private:在同一类内可见。使用对象:变量、方法。注意:不能修饰类(外部类)
&按位与和&&短路与。二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。
8、final有什么用?用于修饰类、属性和方法。
被final修饰的类不可以被继承;
被final修饰的方法不可以被重写;
被final修饰的属性不可以被修改。
①final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
②finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。
①Super可以理解为指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
②super 关键字主要有三个作用:
从子类访问父类的成员变量
从子类访问父类的成员方法
从子类构造器访问父类的构造器
static的主要意义是在于创建独立于具体对象的域变量或者方法。以致于即使没有创建对象,也能使用属性和调用方法。
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。
面向对象:强调具备了功能的对象,以类或对象为最小单位,考虑谁来做。
面向过程:强调具备了功能的行为,以函数为最小单位,考虑怎么做。
①封装:指在定义一个类的时候,将类中的属性私有化,即用private关键字来修饰,同时提供一些可以被外界访问的属性和方法。
②继承:主要作用在于在已有的基础上继续进行功能的扩充。发生于子父类之间,使得子类对象具有父类的实列和方法。
好处:
继承的出现减少了代码冗余,提高了代码的复用性。
继承的出现,更有利于功能的扩展。
继承的出现让类与类之间产生了关系,提供了多态的前提。
特性:
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
③多态:同一个接口,使用不同的实列而执行不同的操作。
实现条件:
通过类的继承关系来实现
需要方法的重写
利用向上转型重写方法调用。
实现原理:
静态绑定:在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类的中,定位到这个方法。静态绑定最大的一个实例就是方法的重载。(所谓重载就是就是在类中可以创建多个方法,它们具有相同的名字,但可具有不同的参数列表、返回值类型。调用方法时通过传递的参数类型来决定具体使用哪个方法。)
动态绑定:在程序运行过程中,根据具体的实例对象才能具体确定是哪个方法。动态绑定最大的一个实例就是方法的重写。(所谓重写就是父类与子类之间的多态性,子类可继承父类中的方法,但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。)
①相同点:
接口和抽象类都不能实例化
都包含抽象方法,其子类都必须覆写这些抽象方法
②不同点:
(1)成员变量:方法外部,类内部定义的变量.
有默认初始值,针对整个类有效;
随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。
随着对象的创建而存在,随着对象的消失而消失。
(2)局部变量:类的方法中的变量。
只在某个范围内有效。(一般指的就是方法,语句体内)。
在方法被调用,或者语句被执行的时候存在,存储在栈内存中。当方法调用完,或者语句结束后,就自动释放。
当方法调用完,或者语句结束后,就自动释放。
(1)名字与类名相同;
(2)没有返回值,不能用void声明构造函数;
(3)生成类的对象时自动执行,无需调用。
(1)== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址)
(2)equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:
情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他已经加入的对象的 hashcode 值作比较,如果没有相符的hashcode,HashSet会假设对象没有重复出现。但是如果发现有相同 hashcode 值的对象,这时会调用 equals()方法来检查 hashcode 相等的对象是否真的相同。如果两者相同,HashSet 就不会让其加入操作成功。如果不同的话,就会重新散列到其他位置。HashSet 在对⽐的时候,同样的 hashcode 有多个对象,它会使⽤ equals() 来判断是否真的相同。也就是说 hashcode 只是⽤来缩⼩查找成本。
19、为什么重写equals时必须重写hashCode方法?”hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)。
20、为什么 Java 中只有值传递按值调用表示方法接收的是调用者提供的值,而按引用调用表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容。
21、java 中 IO 流分为几种?(1)按照流的流向分,可以分为输入流和输出流;
(2)按照操作单元划分,可以划分为字节流和字符流;
(3)按照流的角色划分为节点流和处理流。
InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。
OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。
(1)BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
(2)NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
(3)AO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。
Files. exists():检测文件路径是否存在。
Files. createFile():创建文件。
Files. createDirectory():创建文件夹。
Files. delete():删除一个文件或目录。
Files. copy():复制文件。
Files. move():移动文件。
Files. size():查看文件个数。
Files. read():读取文件。
Files. write():写入文件。
(1)JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
(2)反射机制优缺点
优点: 运行期类型的判断,动态加载类,提高代码灵活度。
缺点: 性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多。
形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符
含义上: 字符常量相当于一个整形值(ASCII值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)占内存大小 字符常量只占一个字节 字符串常量占若干个字节(至少一个字符结束标志)
indexOf():返回指定字符的索引。 charAt():返回指定索引处的字符。 replace():字符串替换。 trim():去除字符串两端空白。 split():分割字符串,返回一个分割后的字符串数组。 getBytes():返回字符串的 byte 类型数组。 length():返回字符串长度。 toLowerCase():将字符串转成小写字母。 toUpperCase():将字符串转成大写字符。 substring():截取字符串。 equals():字符串比较。27、int 和 Integer 有什么区别?
(1)int是基本数据类型,Integer是引用数据类型;
(2)int默认值是0,Integer默认值是null;
(3)int类型直接存储数值,Integer需要实例化对象,指向对象的地址。
总结的可能不是很到位,希望各位大佬多多指正。



