1 java基础
文章目录
- 1 java基础
- 前言
- 一、面相对像和面向过程的区别
- 二、java语言有哪些特点
- 三、JVM JDK和JRE解答
- 四、字符型常量和字符串常量的区别
- 五、构造器Constructor是否可以被Overide?
- 六、重载和重写
- 七、Java三大特性:封装、继承、多态
- 八、String StringBuffer和String Builder的却别是什么?String为什么是不可变的?
- 九、自动装箱与拆箱
- 十、在一个静态方法内调用非静态方法为什么是非法的
- 十一、接口和抽象类的区别是什么
- 十二、成员方法和成员变量的区别是哪些?
- 十三、创建一个对象用什么运算符?对象实体与对象引用有何不同?
- 十四、==与equals(重要)?
- 十五、hashCode与equals()重要
- 十六、关于final关键字的一些总结?
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、面相对像和面向过程的区别
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
1、面向过程
面向过程最主要的还是考虑性能因素,对资源开销比较大。比如单片机、嵌入式开发、linux等都是面向过程开发。面向过程代码大多可以直接编译成机器语言在电脑上执行。
2、面向对象
面向对象容易维护、易扩展、易复用。具有封装、继承、多态的特点。系统更加灵活、易于维护。面向对象相比于面向过程性能更低。
二、java语言有哪些特点
- 简单易学
- 面向对象(封装、继承、多态)
- 平台无关性(java虚拟机)
- 可靠性
- 安全性
- 支持多线程(C++没有多线程,需要调用操作系统的多线程功能进行程序设计)
- 支持网络编程,简便
三、JVM JDK和JRE解答
1、java程序到源代码运行
.java文件(源代码)–javac编译–》.class文件–JVM—》及其可执行的二进制代码
2、JVM
java字节码的虚拟机。JVM针对不同系统特定实现(Windows、LInux、Mac)使用相同的字节码文件得出相同的结果。
3、JDK
功能齐全的java SDK,拥有JRE所拥有的一切。还有编译器javac和其他工具。
4、JRE
java运行时环境。包括了已编译java程序所需要的所有内容的集合,包括java类库、java命令等。
四、字符型常量和字符串常量的区别
- 字符串常量通常用“”的若干个字符,字符常量试用‘’的一个字符。
- 含义:字符常量相当于一个整形值(ASCII),可以参加运算;字符串常量表示的是一个地址值。
- 字形只占两个字节,字符串常量占若干个字节。
五、构造器Constructor是否可以被Overide?
构造器不可以被重写,但是可以被overload(重载),所以会有多个构造器的情况。
六、重载和重写
- 重载发生在同一个类中,方法名相同、参数类型不同、个数不同、顺序不同、方法返回值不同和访问修饰符不同。
- 重写是子类对父类的允许访问范围的方法的实现过程进行重新编写,发生在子类中、方法名、参数列表必须相同,返回值范围小于父类;访问范围大于父类。private的类型不能重写。
七、Java三大特性:封装、继承、多态
1封装
封装一个对象属性私有化,同时提供一些可以被外界访问的方法。
2继承
通过继承可以方便的服用以前的代码。
13. 子类拥有对象所有的属性和方法(私有属性和私有方法),但是父类私有属性和方法子类是无法访问的只是拥有。
14. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
15. 子类可以用自己的方式实现父类的方法
3 多态
即一个引用变量所指向的具体类型在编程时不确定,在程序运行期间才能确定。Java中有两个方法实现多态,继承(多个子类对同一个方法的重写)、接口(实现接口覆盖接口中的同一个方法)。
八、String StringBuffer和String Builder的却别是什么?String为什么是不可变的?
1可变性
简单来说,String类中的final关键字修饰字符串数组来保存数据、private char value[] 所以String对象是不可变的。但是String Buffer和String Builder用的也是字符数组,但是没有final关键字修饰,所以这两种对象是可变的。
2 线程安全性
String中的对象是不安全性的,可以理解为常量,线程安全。StringBuilder与String Buffer的公共父类,定义了一些字符串的基本操作,比如expendCapacity,insert,indexof等公共方法。String Buffer对方法加了同步锁,而StringBuilder没有加同步锁。所以是非线程安全。
3 性能
String类型进行改变时候,都会生成一个新的String对象,然后指针指向新的对象的地址;String Buffer和StringBulider不会新生对象,直接操作的是对象。
九、自动装箱与拆箱
- 装箱:将基本数据类型封装起来,像对象一样操作
- 拆箱:将包装类型转换为基本数据类型
十、在一个静态方法内调用非静态方法为什么是非法的
由于静态方法可以不通过对象进行调用,因此在静态方法中不能调用其他非静态变量,也不可以访问非静态变量。
十一、接口和抽象类的区别是什么
- 接口的默认方法public,所有方法接口中不能有实现
- 接口中除了public、final,不能有其他的变量。
- 一个类可以实现多个接口,但是只能实现一个抽象类。
- 接口默认修饰符是public,抽象方法有public、protected和default这些修饰符。
十二、成员方法和成员变量的区别是哪些?
-
从语法上看:成员变量属于类,局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public、private、protected、static修饰,但是局部变量不能,成员变量和局部变量都能被final修饰。
-
从变量在内存中生存时间看:成员变量是对象的一部分,它随着对象的创建而存在,局部变量随着方法的调用而消失。
-
成员变量会自动赋值,但是局部变量不会自动赋值。
十三、创建一个对象用什么运算符?对象实体与对象引用有何不同?
new.对象引用指向对象实例(放在对对内存中)。一个对象引用可以指向(0或1)个对象,就是一根绳子可以绑住或者不绑住气球;但是一个对象可以有很多个对象引用指向它。
十四、==与equals(重要)?
- == :他作用是判断两个对象的地址是否相等,基本数据类型 == 比较的是值,引用数据类型==比较的是内存地址。
1 equals():它的作用也是判断两个对象是否相等。他一般有两种使用情况:
- 情况1:类没有覆盖equals方法,也就是类中没有重写equals(),通过obejct覆盖equals()比较该类的对象时,等价于==比较两个对象。比较的是内存地址。
- 情况2:类覆盖了equals(),例如:String、Data、File等包装类都覆盖了equals(),比较的是内容。
十五、hashCode与equals()重要
为什么重写equals()必须重写hashcode。
1hashcode介绍
hashCode的作用就是获取哈希码,也称作散列码;他实际上返回的是一个int类型的整数。这个hash码的作用确定的是对象在hash散列中的位置。hashCode定义在JDK的Object.java中,这意味着java中任何类都有hashCode函数。散列表存储的是键值对(key,value),根据键快速找到散列码。
2为什么要有hashcode
把对象加入到HashSet中的时候,hashset会先计算对象的hashcode值来判断对象加入的位置,同时也会与该位置其他的hashCode值,相等再通过equals()方法判断对象内容是否相等,否则不相符。这样就可以减少equals()方法的使用次数,提高性能。
十六、关于final关键字的一些总结?
final关键字主要用在三个地方:变量、方法、类
- 对于一个final变量,是基本数据类型初始化之后不能修改;若果是引用数据类型的变量,则在初始化之后不能指向其他对象。
- final修饰的类不能被继承,所有成员方法都会隐式的指定为final方法。
- 原因:1:锁住方法,2:效率。现在类中的用private隐含指定为final
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。