1 java基础

1 java基础



前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、面相对像和面向过程的区别

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1、面向过程

面向过程最主要的还是考虑性能因素,对资源开销比较大。比如单片机、嵌入式开发、linux等都是面向过程开发。面向过程代码大多可以直接编译成机器语言在电脑上执行。

2、面向对象

面向对象容易维护、易扩展、易复用。具有封装、继承、多态的特点。系统更加灵活、易于维护。面向对象相比于面向过程性能更低。

二、java语言有哪些特点

  1. 简单易学
  2. 面向对象(封装、继承、多态)
  3. 平台无关性(java虚拟机)
  4. 可靠性
  5. 安全性
  6. 支持多线程(C++没有多线程,需要调用操作系统的多线程功能进行程序设计)
  7. 支持网络编程,简便

三、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命令等。

四、字符型常量和字符串常量的区别

  1. 字符串常量通常用“”的若干个字符,字符常量试用‘’的一个字符。
  2. 含义:字符常量相当于一个整形值(ASCII),可以参加运算;字符串常量表示的是一个地址值。
  3. 字形只占两个字节,字符串常量占若干个字节。

五、构造器Constructor是否可以被Overide?

构造器不可以被重写,但是可以被overload(重载),所以会有多个构造器的情况。

六、重载和重写

  1. 重载发生在同一个类中,方法名相同、参数类型不同、个数不同、顺序不同、方法返回值不同和访问修饰符不同。
  2. 重写是子类对父类的允许访问范围的方法的实现过程进行重新编写,发生在子类中、方法名、参数列表必须相同,返回值范围小于父类;访问范围大于父类。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不会新生对象,直接操作的是对象。

九、自动装箱与拆箱

  1. 装箱:将基本数据类型封装起来,像对象一样操作
  2. 拆箱:将包装类型转换为基本数据类型

十、在一个静态方法内调用非静态方法为什么是非法的

由于静态方法可以不通过对象进行调用,因此在静态方法中不能调用其他非静态变量,也不可以访问非静态变量。

十一、接口和抽象类的区别是什么

  1. 接口的默认方法public,所有方法接口中不能有实现
  2. 接口中除了public、final,不能有其他的变量。
  3. 一个类可以实现多个接口,但是只能实现一个抽象类。
  4. 接口默认修饰符是public,抽象方法有public、protected和default这些修饰符。

十二、成员方法和成员变量的区别是哪些?

  1. 从语法上看:成员变量属于类,局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public、private、protected、static修饰,但是局部变量不能,成员变量和局部变量都能被final修饰。

  2. 从变量在内存中生存时间看:成员变量是对象的一部分,它随着对象的创建而存在,局部变量随着方法的调用而消失。

  3. 成员变量会自动赋值,但是局部变量不会自动赋值。

十三、创建一个对象用什么运算符?对象实体与对象引用有何不同?

new.对象引用指向对象实例(放在对对内存中)。一个对象引用可以指向(0或1)个对象,就是一根绳子可以绑住或者不绑住气球;但是一个对象可以有很多个对象引用指向它。

十四、==与equals(重要)?

  1. == :他作用是判断两个对象的地址是否相等,基本数据类型 == 比较的是值,引用数据类型==比较的是内存地址。

1 equals():它的作用也是判断两个对象是否相等。他一般有两种使用情况:

  1. 情况1:类没有覆盖equals方法,也就是类中没有重写equals(),通过obejct覆盖equals()比较该类的对象时,等价于==比较两个对象。比较的是内存地址。
  2. 情况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关键字主要用在三个地方:变量、方法、类

  1. 对于一个final变量,是基本数据类型初始化之后不能修改;若果是引用数据类型的变量,则在初始化之后不能指向其他对象。
  2. final修饰的类不能被继承,所有成员方法都会隐式的指定为final方法。
  3. 原因:1:锁住方法,2:效率。现在类中的用private隐含指定为final

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值