美文网首页
java基础--(简单总结)

java基础--(简单总结)

作者: 远方的猫dj | 来源:发表于2017-06-16 17:53 被阅读0次

位运算:

System.out.println(5<<2);  //20左移:左边去掉两位,右边补2个0

System.out.println(5>>2);  //1  右移:右边去掉两位,左边补2个0

//练习:

int a = 8;

System.out.println(a>>2);  //2

System.out.println(a<<2);  //32

System.out.println(3&6);  //2  位与运算:位数对齐,全1才为1

System.out.println(3|6);  //7  位或运算:位数对齐,全0才为0

System.out.println(3^6);  //5  位异或运算:位数对齐,相同为0,不同为1

进制转换

二进制 :0b开头,0b0001

八进制 :0开头, 00001

十六进制 :0x开头,0x

技能点:将其他进制转换为10进制

公式:N进制转10进制:从右到左,N^0*数值+N^1*数值+..+N*(最高位)*数值

练习:0b111,0123, 0x1ef这些结果分别是多少?

7    83    15+14*16+256=495

技能点:将10进制转换为其他进制

公式:转为N进制,十进制数一直整除N直到商为0,余数从下往上排列

练习:50---八进制:062十六进制:0x32     0b110010

循环

三种循环的应用场景:

for: 循环次数可预见

while:循环次数不可预见

do.while: 循环次数不可预见; 至少处理一次

跳出:

continue;  //跳出当次循环,不影响下一次循环的执行

break;  //跳出循环

return:跳出方法

加标签(outer:)可以跳出标签所在外层循环, out:for(){ break out;

continue out;}

递归的条件:

1.具有递归的规律性

2.要有递归的出口

3.递归n值过大,会引起栈溢出,StackOverflowError

(尾递归:jdk1.8实现)

数组

(1)数组是用来存储一组相同数据类型的数据结构。

数组中的元素可以是任何数据类型(基本类型和引用类型)。

数组变量属于引用数据类型

String[] names = new String[3];  //创建一个存3个元素的String类型的数组

异常:java.lang.ArrayIndexOutOfBoundsException,NullPointException

(2)可变参数//int...a

public static int add(int...a){  //本质是数组

int sum = 0; for(int i=0;i

return sum;}

查找

二分查找法在数组中的应用: (二分查找前提: 数组元素已排好序)

定义一个数组: 1,4,7,12;在数组中查找7,找到则返回下标

作用: 比一般查找法效率要高,因为取一半进行比较;不需要一个一个元素比

分析: 通过下标取半

排序

冒泡排序:从左往右,相邻两数相比较,大的放右边,依次类推,比较n-1次 ,时间: o(n*2)

选择排序:第一个和后面所有比较,最小的放第一个,依次类推,时间: o(n*2)

插入排序:

面向对象

基本语法:Java最基本的单位是类,具体化-对象,对象的基本信息--属性,

对象的行为-方法

封装

属性不能直接被外部调用--限制权限private

通过方法进行封装---set/get

成员变量 VS 局部变量

成员变量:

1、成员变量定义在类中,在整个类中都可以被访问。

2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

3、成员变量有默认初始化值。

局部变量:

1、局部变量只定义在局部范围内,只在所属的区域有效。

2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

3、局部变量没有默认初始化值

使用变量需要遵循的原则为:就近原则,首先在局部范围找,有就使用;接着在成员位置找。

static修饰的变量称为静态变量(类变量,被所有对象共享)

继承

面向对象的第二大特性

特性:  子类继承了父类,则可使用父类的属性和方法

构造方法是否具有继承性?不具有

继承,私有的方法和变量会不会被继承?不会

Object: 是面向对象中类的老祖宗,不写继承默认就有

分析打印流程:

只要是打印对象,如果当前类没有重写,则调用的是父类的toString方法:包名@hash值

super、this

super.xxx来引用父类的成员或方法

super();  //默认有调用父类的构造方法

this()--调当前类构造方法,形参与成员名字重名,用this来区分

equals

*1. “==”: 两个字符串对象用等号,比较的是对象的地址

*2. equals: 在OBj类的对象的equals方法,比较的是地址;

*          String类重写的方法,则比较的是内容

final

1. final修饰属性:

final修饰的属性必须初始化,不能改变final修饰的属性的值

应用常用:  static final 定义状态值是绝配

public static final int HTTP_OK = 1;

2. final修饰类:(太监类)

3. final修饰方法:父类的方法不能重写

static

1.Static修饰属性: 静态成员属性 VS 成员属性

成员属性: 每个对象独享一份成员属性调用:this.属性

静态成员属性: 每个对象共享一份成员属性调用:类名.属性

2.Static修饰代码块: 静态代码块 VS 代码块

代码块: 每个对象都会初始执行一次代码块

静态代码块:无论有多少个对象只加载一次静态代码块

3.Static修饰方法: 静态方法 VS 成员方法

成员方法: 成员方法属于对象,调用方式:对象.方法

静态方法: 属于类,调用方式:类.方法(强烈推荐)

结论:只要加了static修饰的方法、代码块、属性;都不属于对象,属于类;

他的应用不依赖对象,且在对象之前就已经出现

问题: 1. 在成员方法中能否使用静态变量?可以

2. 在静态方法中能否使用成员变量?不可以

3. 在静态方法中能否调用成员方法?不可以

4. 为什么在main方法中加static?共享特性

应用场景: 1.修饰属性:    用作状态值的判断

2.修饰代码块: 当程序的某个功能只需初始化一次

3.修饰方法:    充当工具类

多态(实现控制反转)

多态,是面向对象的程序设计语言最核心的特征。意味着一个对象有着多重特

征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。

继承:父类对象指向子类对象,可以调用子类重写的方法

接口:接口类对象调用实现类对象,可以调用实现类重写的方法

相关文章

网友评论

      本文标题:java基础--(简单总结)

      本文链接:https://www.haomeiwen.com/subject/vkcefxtx.html