【无标题】

总结

1数据类型

1.1数据分类

基本数据类型:

数值型(整数型(byte,short,int long) 浮点型(Float double))

字符型(char)

布尔型(boolean

引用数据类型:

类 数组 接口

ASCLL码:

a=97

A=65

0=48

1.2数据类型的使用

数据类型 名字=值;

整数型默认为int型

小数默认为double型

字符可以转换为对应的ASCLL码

char c1='a';

int i1=c1;

System.out.println(i1);    97

转义符(\):把有意义的字符转换为无意义的字符

1.3类型转换

八种基本类型,除了布尔型。其他的均可以进行转换

自动转换:低精度到高精度自动转换

byte short char int 运算结果过默认为int

强制类型转换:高精度到低精度为强制转换

byte b=5;

int i=b;

b=(byte)i

byte->short->int->long->float->double

(char)

2.变量

2.1常量

常量在程序的整个生命周期中,值不可更改

字面量/直接量

字面量也是有数据类型的

整数默认是整型 int

小数 默认是double

final修饰的值不能更改

2.2变量

可以更改的量,方便进行操作,并且可以复用

2.3全局变量

全局 : 允许在类外创建变量,和类同级别,所有类都可以直接访问这个变量,不需要二次引用

所谓二次引用,就是指  没有使用 . 操作符  xxx.xxx

而在java中类之外是不允许写变量的,但是可以把一个变量的访问权限设置为public,然后通过类名进行引用调用即可

全局的缺点 就是命名冲突问题

2.4变量声明

数据类型  变量名=值;

2.5变量作用域

一个大括号为一个作用域,一个变量的作用域不会超过这个大括号

2.6变量分类

局部变量  成员变量(成员和静态成员,静态成员又称为静态变量)

局部变量:在方法中声明的变量称为局部变量,该变量只能在该方法中使用

                  直接通过名字调用该变量即可,且局部变量没有默认值,必须赋值

静态变量:在类体中使用static声明的变量,和方法是平级

                 通过类名.静态变量名才能调用,在当前类中调用时,可以省略类名

                 整数默认为0  小数默认为0.0   布尔型默认为false  字符型默认为\u0000  引用类型  null

成员变量:在类体中没使用static声明的变量,和方法是平级

                  成员变量需要通过  对象引用.成员变量才能调用

                  默认值和静态变量一样

3.运算符

3.1算数运算符

不要判断小数相等

++i:先加1,在赋值

i++:先赋值,再加1

优先级:单目>双目>三目

3.2位运算符

&:两边都是真,结果才是真,如果两边是数值,则为与运算

|:两边一个为真,就为真

!:取反

^:两边都不一样,结果为true

~:按位取反   0000 0000   取反位,然后求反码,补码,结果(简便记忆A=-(A+1))

>>:右移运算符,二进制右移动两次,正数,左边补0(符号位后),负数补1

<<:左移运算符,二进制左移动两次   补0

>>>:右移运算符   不考虑符号位,符号位前补0,并且只补0

&&:两边都为真才为真,判断时,前边为false,后边不执行

||:一边为真就为真,判断时,前边为true,后边不执行

3.3赋值运算符

+=:左右相加,赋值给左边

左结合:同等优先级,先算左边

右结合:同等优先级,先算右边

3.4字符串拼接

两边位数字,+为求和

有字符串,+为拼接

3.5三目运算符

语法:布尔型表达式?真:假;

布尔型为true,执行真,false执行假

4流程控制

控制程序的不同执行分支

4.1顺序结构

严格从上到下从左到右

4.2分支结构

通过指定的判断条件,选择执行不同的分支

4.2.1  if…else…

单分支:有不执行情况

             if(布尔表达式){

            为真时执行的代码    

         }

双分支:一定有一个分支执行

             if(布尔表达式){

            为真时执行的代码

           }else{

               为假时执行的代码

          }

多分支:if(布尔型表达式){}  else if(布尔表达式){} else if(布尔表达式){}……

             多分支最后以else结尾,肯定有一个分支执行

             多分支以else  if  有不执行情况

每个分支下如果只有一行代码,{}可以省略

4.2.2  Switch

语法:switch(值){case值1:执行语句;break;

                            case值2:执行语句;break;

                           case值3:执行语句;break;

                             default:执行语句;break;

}

4.3循环结构

4.3.1For

4.3.1.1单循环

for循环语法结构:

for(初始化操作;终止条件;步长){

循环体

}

4.3.2  While

while:真假循环,条件为真,就执行,为假就终止

语法:

while(布尔型){

循环体

4.3.3  Do…while…

可以保证循环至少执行一次

语法结构:

do{

循环体

}while(布尔型)

4.3.4 break和 continue

break:

可以在switch中,用来结束case分支

可以在循环中,结束当前循环

在嵌套循环中,可以结束内层循环,如果给外层循环加上名字(ab:for),break abfor可以终止外层循环

continue:跳过当前次循环,继续下次

5.方法

5.1概述

方法就是很多条语句的集合,把这些代码放到方法中,可以多次使用这个方法

方法目的:代码复用,使程序更加简单清晰,提高开发效率

5.2 方法声明

修饰符列表  返回值类型 方法名(参数列表){方法体}

修饰符列表:可以有,可以没有,可以多个

返回值类型:11种数据类型中的任意一种,如果不需要返回值,则写void

方法名:方法的名字,望文知义,驼峰命名法

参数列表:要做一件事,需要的必备条件,可以作为入参

                  有多个用逗号隔开,    int a, int b , intc……

                  形参:在方法声明的时候,定义的参数列表

                  实参:方法调用时,实际传入的的数据

方法体:需要执行的代码

                 return 终止方法并返回

如果有返回值类型的方法中,必须有return语句

public static int m1(){

return 1;  只要是int值就行

}

如果没有可以不写,写了只能终止运行,不能返回数据

5.3  方法分类

静态方法:使用static修饰的方法,是静态方法

成员方法:没有static修饰的方法,是成员方法

构造方法:是每个类都有,并且用于创建该类对象

调用:

静态方法:类名.静态方法名(参数),同类中,类名可以省略

成员方法:对象引用.成员方法名(参数)

方法不调用不执行,调用才执行,并把结果返回到调用处

5.4入参和出参

入参:做这件事需要的未知条件

出参:做完这件事需要进行的反馈

5.5方法重载

方法唯一性:方法名和参数

方法重载(overload):方法名相同,参数列表不同

列表不同分为:个数不同和类型不同

6.内存分析

6.1内存划分

 

Java Runtime Data Area : java运行时区域,一般叫JVM内存  

   程序计数器 :

                     一块较小的内存区域.作用可以看做是当前程序执行的位置指示器

   静态区/方法区 :

                     保存程序文件(class文件) 以及静态数据,方法被调用之前,也保存在静态区,内部还有运行时常量池

   

 VM栈 : 又叫栈内存

                    栈内存是以栈数据结构为模型开辟的一段空间, 特性是先进后出

                     栈 : 是一种数据结构,先进后出,像弹夹

   

    栈的构成因素

             栈空间 : 栈内存就是栈空间

            栈帧         : 栈空间中的每一个栈元素 就叫栈帧(比如 弹夹中的每一个子弹 就叫栈帧)

            栈底元素 : 第一个放进去的栈帧

             栈顶元素  : 最后一个放进去的栈帧

  栈操作

            压栈 : 就是指把元素放入栈空间的过程

             弹栈 : 就是把元素弹出去的过程

 

  栈内存,是用来执行方法的,所有方法的执行,必须在栈内存进行

 本地方法栈 :

             用来执行一些本地方法,比如hashCode 等 , 模型和操作都和VM栈一致 , 不用管,

   

   堆内存 :

                     用来保存对象

7.递归

7.1概述和基本使用

递归:方法中调用当前方法(自己调用自己)

递归思想:递归和迭代是等价的,就是循环

                 基本思想就是以此类推

常见问题:所有树状结构

                  文件夹复制

                  斐波那切数列

  斐波那切数列

publicc static void main(String[] args){

int result=factorial(10);

System.out.println(result);

}

public static int factorial(int n){

if(n==1||n==2){

return

}else{

return factorial(n-1)+factorial(n-2);

}

}

8.数组

8.1数据结构

数据结构是计算机存储、组织数据的方式

数据操作:增删改查

8.2数组特性:

内存中连续存储,并且下标从0开始

 数组长度一旦确定 长度不能更改,也就意味着数组是不能添加和删除的

除非新建一个数组,把原数据复制到新数组中,在复制的过程当中可以进行添加和删除操作

所以 数组的查询和更改 效率是很高的,但是 添加和删除效率较低

数组都有一个内置属性 length  保存了数组的长度

 在java中 有一个java.util.Arrays 类 提供了一些数组操作

8.3数组声明

静态声明:已知每个元素

数据类型[]  变量名={值1,值2,值3……};

数据类型[]  变量名=new 数据类型[]{值1,值2,值3……};  数组二次赋值需要这样写

动态声明:不知道数组中的每个元素的时候

数据类型[]   变量名=new  数据类型[长度];

8.4数组使用

8.4.1更改数据

数组[下标]=值;

8.4.2遍历

for(int i=0;i<arr.length;i++){

System.out.println(arr[i]);

}

8.4.3数组传递

m2(new int[]{1,2,3})   数组字面量传递方式

8.4.4mian方法传参

 

 8.5传值和传址

传值:指的是传递基本类型的数据

传址(传引用):指的是传递引用数据类型的值

基本类型传递之后,相互没有影响,因为指向不同的空间

引用类型传递之后,相互有影响,因为指向同一个堆内存对象空间

9 二维数组

9.1声明方式

静态声明: int[][] arr={{1,2,3},{2,5},{5}}

动态声明:int[][] arr=new int[3][4];表示该二维数组中,有3个一维数组,并且每个一维数组中都有4个数据

int[][] arr=new int[3][];表示该二维数组中,有3个一维数组,并且这三个一维数组都是null

每个一维数组不一样的需要单独初始化

arr[0]=new int[5]

arr[1]=new int[4]

arr[2]=new int[9]

9.2存储方式

int[][] arr={{1,2,3},{2,5},{5}}

9.3 使用方式

9.3.1获取方式

将二维转换为一维,在获取一维

9.3.2更改数据

数组[下标][下标]=值

9.3.3遍历

使用嵌套循环

10.排序

排序:就是指让保存的元素按照一定的规则进行排序存储

10.1冒泡排序

1.比较相邻的元素,如果第一个比第二个大,就交换他们两个

2.对每一对相邻元素做相同的工作,从开始第一对到结尾的最后一对

3.针对所以元素重复以上的步骤,除最后一个

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要准备

 10.2选择排序

1.每次把最小的放到左边

     拿出第一个,假设是最小的,然后挨个和后面的比较,如果有比第一个小的,就交换下标

     比较完一轮后,得到最小元素下标,放到前面

2.重复上面步骤,直到当前元素后面没有元素时终止

 11.查找元素

11.1顺序查找

遍历,用所有数据挨个和目标数据进行比较

11.2二分查找

也叫折半查找

要求数据必须有序

1 确定开始和结束还有中间数据

2 用目标数据 和 中间数据进行比较

3 如果目标数据等于中间数据,返回中间数据的索引即可

4 如果目标数据大于中间数据的话,则在后半截继续查找,起始=中间+1,结束不变,再生成中间数据

5 如果目标数据小于中间数据的话,则取前半截,起始不变,结束=中间-1,再生成中间数据

6 重复执行以上步骤,如果起始 大于 结束 说明未找到,返回-1

 12. 面向对象

12.1概述

面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

12.2面向对象和面向过程

面向过程:侧重分步骤

面向对象:侧重分模块

面向对象优势:可扩展性,可维护性,灵活性,使程序耦合度降低

缺点:性能比面向过程相对较差

12.3构造方法

构造方法:是每个类都有,并且用于创建该类对象

如果该类中没有编写构造方法,那么编译器会自动帮我们成一个无参构造

如果该类中编写了构造方法,不管写得是不是有参,默认的无参构造都不在自动生成

所以当我们在写有参构造的时候,可以手动编写一个无参构造

构造方法语法: 修饰符  方法名(必须和类名一致)(参数列表){方法体}

12.4类和对象

对象:就是某一个具体的事物

类:描述了这一类事物的属性和特征,进行抽象出的模板

对象就是类的实现,保存了属性的值

在编译中通过需求或者现实事物的属性和特征来定义相关的类

通过不同的属性值来定义不同的对象

如果对象和对象之间,有相同的属性相同的值,就使用静态变量

如果对象和对象之间,有相同的属性不同的值(也可以相同),就使用成员

12.5实例化

1.加载对应类文件

2.new在堆内存创建空间

3.执行构造方法,对堆内存对象进行初始化

4.构造方法弹栈,并把堆内存返回给变量

Student student=new Student();    变量

new Student();      字面量

12.6对象调用静态属性

静态属性可以使用类名调用,也可以使用对象调用(在编译阶段,会把对象转换为类名调用,该变量是不是null没有关系)

12.7注意事项

12.7.1静态调用成员

静态方法中无法直接使用非静态属性,需要使用对象调用

静态变量:对象之间共有的属性和值

成员变量:对象之间共有的属性不同的值,值也可以相等

成员方法:方法中需要使用成员属性的时候,定义为成员方法

静态方法:方法中不需要使用成员属性的时候,定义为静态方法

12.7.2传值和传引用

13 This

13.1概述

this:是每个对象中,保存自身内存地址的一个引用类型变量

this就表示当前对象

13.2 能做什么

1.在成员方法或者构造方法中,区分同名的成员变量和局部变量
                    this.xxx
 2.在构造方法中,重载调用当前类中其他构造方法,但必须写在构造方法第一行
                    this(xxx)
3.return this  返回当前对象的内存地址,可以链式调用
 谁调用这个成员方法,this就是谁
 注意 this不能使用静态方法中

13.3成员和局部

静态变量可以和成员变量同名

局部优先级高

使用类名区分同名的静态变量和局部变量

使用this区分同名的成员变量和局部变量

注意:this不能出现在静态上下文

14.Static

14.1概述

修饰符,关键字,用来区分静态和成员

14.2静态语句块

等同于静态方法

自动执行,在程序加载阶段执行完成,并且只执行一次

static{};

14.3实例语句块

可以看做成员方法,没有static修饰的语句块就是成员语句块

{      }

15.封装

把所有组成部分组合到一起,还可以通过权限控制修饰符将数据隐藏起来,可以控制用户对类数据的修改程度

适当的封装可以让代码更容易理解,易于维护,更提高了代码的安全性

Package

       软件包机制,主要解决了命名冲突问题

Import

       用于把当前类中需要的其他类载入,必须在class之上,package语句之下

权限控制

 

15.继承

15.1概述

已有的类中,派生出新的类,新的类用于父类的属性和行为

15.2功能

代码复用,提高效率,还可以进行覆写,可以使用多态

语法   class 类名 extends 父类名 {类体 }

16.Super

 代表了父类的特征,用在成员方法和构造方法中区分父子类之间同名的方法和变量super.xxx

   还可以用在子类方法中,调用指定的父类构造方法super(xxx),必须出现在子类构造方法第一行

注意:

如果在子类构造方法中,没有显示出现super() 也没有出现 this(xxx)  则 默认有一个super() 调用父类无参构造

并且 super(xxx) 必须出现在子类构造方法 第一行  所以 this(xxx) 和 super(xxx) 不能同时出现

17.覆写

覆写特指成员方法,当父类功能无法满足子类需求时,进行覆写

 写一个和父类一样的方法,但是功能不同

规则:

      1 方法名,返回值,参数列表 必须和父类一致

       2 不能比原方法拥有更低的访问权限

       3 不能比原方法拥有更宽泛的异常

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值