基本数据类型
整型:byte(1字节) short(2字节) int(4字节) long(8字节)
浮点型:float(4字节) double (8)
布尔型:boolen
字符型:char
引用数据类型:
类
接口
数组
以byte类型为例阐述计算机原码反码补码的作用
1.因为计算机在进行加减法的时候会产生+-0的问题,反码为了解决减法运算问题,补码解决0的符号以及两个编码的问题
反码: 00000001+10000001=10000002=-2 所以用00000001+11111110=11111111=10000000=-0 所以上一步11111111+1=00000000=0
补码: +-0的问题:10000000和00000000
构造器的特点
1.构造器与类同名
2.new一个对象时,new后边的就是构造函数
3.每个类中都有一个默认不显示的无参构造器,在不写构造器时默认调用它,在写了构造器后调用写的构造器
4.构造器没有返回值
5.一个类中可以有一个或多个构造器
==与equals()的区别
1) 、对于==,比较的是值是否相等
如果作用于基本数据类型的变量,则直接比较其存储的 值是否相等,
如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。
2) 、对于equals方法,比较的是是否是同一个对象
equals()方法不能作用于基本数据类型的变量,
另外,equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,所以说所有类中的equals()方法都继承自Object类,
在没有重写equals()方法的类中,调用equals()方法其实和使用==一样,也是比较的是引用类型的变量所指向的对象的地址,
有些类重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值。
一、什么是面向对象编程?
面向对象的编程产生的历史原因:由于面向过程编程在构造系统时,无法解决重用,维护,扩展的问题,而且逻辑过于复杂,代码晦涩难懂,因此,人们开始想能不能让计算机直接模拟现实的环境,以人类解决问题的方法,思路,习惯和步骤来设计相应的应用程序。于是,面向对象的编程思想就产生了。
面向对象的编程的主要思想是把构成问题的各个事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在解决问题的过程中经历的步骤和行为。对象作为程序的基本单位,将程序和数据封装其中,以提高程序的重用性,灵活性和可扩展性。类是创建对象的模板,一个类可以创建多个对象。对象是类的实例化。
二、什么是类,什么是对象,类与对象的关系是什么?
类是抽象的,不占用堆内存空间;而对象具体的,占用堆内存空间。
类是对象的模板,我们可以将类想象成制作小甜饼的切割机,将对象想象成小甜饼,由类构造对象的过程叫做类的实例化。
三、封装
封装是java面向对象的一种特性,从形式上来看封装不过就是将数据和方法组合在一起,并对数据的访问者隐藏了数据的实现方式。在对象当中的数据称为实例域,操作数据的过程称为方法。
获得或者设置实例域的值应该提供下面三项内容
- 一个私有的实例域
- 一个公有的域访问器方法
- 一个公有的域更改器方法
读取输入
Scanner in = new Scanner(System.in);
String name = in.next()
数组的扩容
由于数组的长度是不可变的,那么就会给我们造成一个问题,既当我们给数组添加数据满了以后就不能在添加了
解决思路:
我们只需要重新见一个数组,新的数组的长度是原来数组长度+1,然后将数组当中的值传递 给新数组,老数组的句柄指向新数组的堆内存空间
public static void main(String[] args) { //定义数组 int[] arr = new int[] {1,2,3};
//快速的查询出数组当中的元素
System.out.println(Arrays.toString(arr));
//要加入数组的目标元素 int dst = 10;
//创建一个数组,数组长度是原数组长度 + 1
int[] brr = new int[arr.length+1];
//数组当中的数据全部复制到新的数组当中去
for (int i = 0; i < arr.length; i++) { brr[i] = arr[i]; }
//将目标元素放入到新数组的最后 brr[3] = dst;
//新数组替换元素组 arr = brr; //快速的查询出数组当中的元素 System.out.println(Arrays.toString(arr));
数组的插入
数组的插入和删除都需要移动数据元素,插入x作为第 i 个元素,首先必须将元素ai,ai+1.......an-1向后移动,空出第 i 个元素,然后将 x 插入。如果数组,则不能插入,称为数组 溢出 。解决数据 溢出 的办法是,申请一个更大容量的数组,并复制全部的数组元素,这样就扩充了顺序表得容量
有序数组的二分法查找
思路
以及数组元素是按顺序排序的,value是我们要查询的数据,begin和end表示要查询子序列 的范围 ①:从子序列的中间位置mid开始比较。value和mid元素相等,则查找成功;否则根据value 大小缩小查询范围,若value较小,则继续在子序列的前半段查找;反之继续在后半段查 找 ②:重复①,直到查询成功;当begin和end表示范围无效时,表示查询不成功