- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 Java面试题:面向对象基础
1. 面向对象与面向过程的区别两者的主要区别在于解决问题的方式不同:面向过程把解决问题的过程拆分成一个个方法,通过方法的一个个执行解决问题。 面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。另外,面向对象的开发程序一般更易维护、易复用、易扩展。2. 成员变量与局部变量的区别有哪些从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可被public,private,static等修饰符修饰,而局部变量不能访问控制修饰符及stati
2022-04-13 13:44:27
235
原创 八皇后问题:关于判断是否在同一斜线上算法Math.abs(n-i) == Math.abs(array[n] - array[i])
首先,这个算法的前提:在解决八皇后问题时,将棋盘转为一维数组来描绘。定义数组array,保存皇后放置位置的结果。比如:array = {0,4,7,5,2,6,1,3}此时,array 的下标n 表示行数,value = array[n] 表示皇后所在的列数,(n+1)表示第几个皇后。此处有一个循环,定义i = 0,循环条件i < n,该循环用于比较第(n+1)个皇后与第i 个皇后是否在同一斜线上。进入正题:算法Math.abs(n-i) == Math.abs(array[n]
2022-04-12 18:11:32
1448
原创 Java基本语法4:hashCode()与equals()
面试官可能会问你:”你重写过hashCode()和equals()吗?为什么重写equals()时必须重写hashCode()方法?“一个非常基础的问题,也是面试中的重中之重。hashCode()的作用的是获取哈希码,也称散列码。该方法通常用来将对象的内存地址转化为整数之后返回。我们以”hashSet如何检查重复“为例子说明为什么要有hashCode?下面这段内容摘自《Head First Jaba》:(我们知道Set集合的特点有互异性。)当你把对象加入到HashSet时,HastSe
2022-04-07 12:07:21
427
原创 Java基础语法3:==和equals()的区别是什么
==对于基本类型和引用类型的数据效果是不同的:对于基本数据类型,==比较的值 对于引用数据类型,==比较的是地址equals()方法存在两种使用情况:类没有重写equals()方法:默认使用的是Object类中的equals()方法。通过equals()方法比较该类的对象时,等价于使用==比较该对象。 类重写了equals()方法:一般我们都重写 equals()方法来比较两个对象中的属性是否相等,若它们的属性相等,则返回 true。String 中的 equals 方法是被重写过的.
2022-04-06 23:12:17
259
原创 Java基础语法2:continue、break和return的区别是什么
在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环过程中,当发生了某种条件之后,提前终止循环,这就需要用到下面几个关键词:continue:指跳出当前的这一次循环,继续下一次循环。 break:指跳出整个循环体,继续执行循环下面的语句。 return:用于跳出所在方法,结束该方法的运行。return一般有两种用法: ① return; 直接使用return结束方法执行,用于没有返回值函数的方法。 ② return value; 返回一个value 值
2022-04-03 16:43:27
290
原创 Java基本语法1:字符型常量和字符串常量的区别
1. 形式:字符型常量是单引号(' ')引起的一个字符,字符串常量是多引号(" ")引起的0个或若干个字符。2. 含义:字符常量相当于一个整型值(ASCII值),可以参加表达式的运算;字符串常量代表一个地址值(该字符串在内存中存放的位置)。3. 占内存大小:字符常量只占2个字节,字符串常量占若干个字节。...
2022-04-02 10:24:27
3056
原创 腾讯面试题:实现单链表的反转
1) 实现单链表的反转(头插法)思路:①定义一个新的链表reverseHead。②将原链表节点取出,放在新链表reverseHead 的最前端。③原链表头节点的next = reverseHead.next。
2022-04-01 20:52:44
462
原创 单链表新浪面试题:求单链表中有效节点个数和查找单链表中倒数第k个节点
1)求单链表中有效节点个数① 定义一个getLength()方法,传入的参数为一个链表的头节点。②通过length 来记录链表结点个数。③通过while语句来遍历链表下图为代码实现:2) 查找单链表中倒数第k个节点①定义一个findLastIndexNode()方法,传入的参数为一个链表的头节点和常数k(程序中用index替代)。②index 表示的是倒数index 个节点。③先把链表从头到尾遍历一下,得到链表总长度size ,此处调用getLength()方法。
2022-04-01 12:59:52
1069
原创 Java基础概念与常识:Java和C++的区别
虽然,Java和C++都是面向对象的语言,都支持封装、继承和多态,但是它们还是有许多不同的地方。Java不提供指针来直接访问内存,程序内存更加安全。 Java的类是单继承的,C++支持多继承;虽然Java类不可以多继承,但是接口可以多继承。 Java有自动内存管理回收机制(GC),不需要程序员手动释放无用内存。 C++同时支持方法重载和操作符重载,但是Java只支持方法重载(操作符重载增加了复杂性,这与Java最初设计思想不同)。 ……...
2022-03-31 10:13:06
1615
原创 Java基础概念与常识5:Oracle JDK vs OpenJDK
总结:1. Oracle JDK大概每6个月发行一次主要版本,而OpenJDK大概每三个月发布一次(但这也不是固定的)。2. OpenJDK是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的。3. Oracle JDK比OpenJDK更稳定。Oracle JDK和OpenJDK的代码几乎相同。但Oracle JDK有更多的类和一些错误修复。因此如果是开发企业或商业软件,建议选择Oracle JDK,因为它经过了彻底的测试和稳定。某些情况下,有.
2022-03-30 14:05:20
1595
原创 Java基础概念与常识4:如何理解Java语言“编译与解释并行”
我们可以将高级编程语言按照程序的执行方式分为两种:编译型:编译型语言会通过编译器将源代码一次性翻译成可被该平台执行的机器码。一般情况下,编译型语言的执行速度较快,开发效率比较低。常见的编译性语言有C、C++、Go、Rust等等。 解释型:解释型语言会通过解释器一句一句的将代码解释为机器代码后再执行。解释型语言开发效率比较快,执行速度比较慢。常见的解释行语言有Python、JavaScript、PHP等等。根据维基百科介绍:为了改善编译语言的效率而发展出的即时编译技术,已经缩小了这两种语言.
2022-03-29 09:33:44
820
原创 Java基础概念与常识3:什么是字节码,采用字节码的好处是什么
在Java中,JVM可以理解的代码就是字节码(即后缀名是.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了解释行语言执行效率低的问题,同时又保留了解释行语言可移植的特点。所以Java程序运行时相对来说还是高效的。而且,由于字节码不针对任何一种特定的机器,因此,Java程序无需重新编译就可在不同操作系统的计算机上运行。...
2022-03-27 20:43:43
664
原创 Java基础概念与常识2:JVM vs JDK vs JRE
先上图片,首先要大致理解JDK包含JRE,JRE包含JVM。 |————编译开发工具等 | JDK ———| | |————Java类库 |————JRE ——|...
2022-03-23 12:05:35
215
1
原创 Java基础概念与常识1:Java语言有哪些特点
1.简单易学;2.面向对象(封装、继承、多态)在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。封装只公开某些对外接口,隐藏具体实现细节。增加了一定的安全性,防止信息的泄露与破坏。在现有类(基类、父类)的基础上建立新类(派生类、子类)的处理过程称为继承。多态是指在程序设计中存在同名不同方法的存在。主要通过子类对父类的覆盖实现多态。3.跨平台(Java虚拟机实现平台无关性);4.支持多线程C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程
2022-03-22 18:14:36
763
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人