二、基础语法--面向对象思想

本文介绍了IDE中的项目结构,包括模块和包的组织,以及Java编程中的关键快捷键,涵盖了方法的定义、参数、返回值、调用、数组和对象的概念,以及面向对象编程的封装、继承和多态。此外,还涉及了Java内存管理、构造器和实体JavaBean的使用。
摘要由CSDN通过智能技术生成

IDE集成开发工具(integrated development environment):         project→module→package

所有代码都得在src中,Class文件在out文件下

快捷键

        psvm/main:   public static void main(String[] args) {}
        sout:   System.out.println("1");

当缩小执行结果后,按alt+4显示

Alt+enter       导入包,自动修正代码

Ctrl+Y               删除光标所在行

Ctrl+D              复制光标所在行的内容,插入光标位置下面。

Ctrl+Alt+L        格式化代码

Ctrl+/               单行注释 再按取消注释

Ctrl+shift+/     选中代码注释,多行注释,再按取消注释

Alt+Insert        自动生成代码,toString,get,set等方法

Alt+shift+         上下箭头  移动当前代码行

                  数字.fori   for (int i = 0; i < 20; i++) {}

                  Shift+F6          一起改变

方法:

方法(工厂)就是若干语句的功能集合;方法名字使用小驼峰规则

         参数(原料):进入方法的数据;如果有多个,使用逗号进行分隔

         返回值(产出物):从方法中出来的数据;方法执行后最终产生的数据结果;

         定义方法的完整格式:

         修饰符 返回值类型 方法名称(参数类型 参数名称, …){

                  方法体

                  return 返回值;

         }

        

         返回值类型:方法最终产生的数据结果是什么类型;

         参数类型:进入方法的数据是什么类型;

         参数名称:进入方法的数据对应的变量名称;

         方法体:方法需要做的事,若干行代码

         return:两个作用,第一停止当前方法,第二将后面的返回值还给调用处

                     return后面的返回值,必须和方法名称前面的 返回值类型 保持对应。

         返回值:也就是方法执行后最终产生的数据结果
 

                  Eg:定义一个两个int数字相加的方法。

三要素:

                          返回值类型:int + int→int

                          方法名称:sum

                          参数列表:int a,int b;

方法的三种调用格式:

  1. 单独调用:方法名称(参数);

Main中 sum(10,20);

  1. 打印调用:System.out.println( 方法名称(参数));

Main方法中System.out.println(sum(10,20));

  1. 赋值调用:数据类型 变量名称 = 方法名称(参数);

Main方法中int number = sum(10,20);System.out.println(number);

         返回值类型固定为void时,只能单独调用,不能进行打印调用或者赋值调用

方法的调用流程图解

对比有参数和无参数

         有参数:小括号中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。例如两个数字相加,必须知道两个数字各自是多少,才能相加。

         无参数:小括号中留空,一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。例如定义一个方法,打印固定十次helloworld。

对比有返回值和无返回值

         有返回值的都可以使用三种调用

         无返回值的只能使用单独调用(void)

方法的注意事项:

  1. 方法应该定义在类当中,但是不能嵌套方法
  2. 方法的前后顺序无所谓
  3. 方法定义之后不会执行,需要执行一定要调用
  4. 如果方法有返回值,那么必须写上return  返回值,不能没有
  5. Return的数据必须和方法的返回值类型相同
  6. 对于void,不能写return后的返回值,只能写return;且如果在最后一行,可以删除
  7. 一个方法当中可以有很多的return语句,但是必须保证同时只有一个会被执行到。

重载overload

         对于功能相似的方法来说,因为参数列表不同,若用不同的方法名称,太麻烦了。

→方法重载:多个方法名称一样,但参数列表不同。即可用一个方法名称实现类似的多个功能。

         在调用输出语句print时,println方法就是进行了多种数据类型的重载形式,且是由JDK提供的。

         方法重载与下列因素有关:

  1. 参数个数不同
  2. 参数类型不同
  3. 参数的多类型顺序不同

方法重载与下列因素无关:

  1. 与参数名称无关
  2. 与方法的返回值类型无关

数组:

数组是一种容器,可以同时存放多个数据值。

数组的特点:

①数组是一种引用数据类型;②数组当中的多个数据,类型必须统一;③数组的长度在程序运行期间不可改变。

数组的初始化:在内存中创建一个数组,并且向其中赋予一些默认值;可以拆分为两个步骤;

  1. 动态初始化(指定长度);

在创建数组的时候,直接指定数组当中的数据元素个数。

数据类型 [ ] 数组名称 =  new 数据类型[数组长度];

解析:

左侧数据类型:数组当中保存的数据,全都是统一的什么类型。

左侧的中括号:代表是数组。

左侧数组名称:给数组取一个名字。

右侧的new:代表创建数组的动作。

右侧数据类型:必须和左边的数据类型一致。

右侧中括号的长度:也就是在数组当中,到底可以保存多少个数据,是一个int。

  1. 静态初始化(指定内容);

在创建数组的时候,不直接指定数组当中的数据元素个数,而是直接将具体的数据内容进行指定。

基本格式(标准格式):

          数据类型 [ ] 数组名称 =  new 数据类型[ ]{元素1、元素2、……};

虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出长度。

         省略格式(不可拆分为两个步骤):

          数据类型 [ ] 数组名称 =  {元素1、元素2、……};

直接打印数组名称,得到的是数组对应的内存地址哈希值。

访问数组元素的格式:数组名称 [ 索引值 ]

         索引值:是一个int数字,代表数组当中元素的编号。从0开始,一直到数组长度-1;

如果使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。规则如下:

         如果是整数类型,默认为0;

         如果是浮点类型,默认为0.0;

         如果是字符类型,默认为‘\u0000’;

         如果是布尔类型,默认为false;

         如果是引用类型,默认为null;

注意事项:静态初始化也有默认值,但是系统自动将默认值替换为大括号后的内容;

Java的内存划分:

  1. stack

存放的都是局部变量;方法的运行一定要在栈当中运行。(局部变量:方法的参数,或者是方法{ }内部的变量)。一旦超过作用域,立刻从栈内存当中消失。

  1. heap

凡是new出来的东西,都在堆当中。堆内存里的东西都有一个地址值(十六进制),堆内存中的数据都有默认值。

  1. 方法区(method area

存储.class相关的信息,包含方法的信息。

  1. 本地方法栈(native method stack)

与OS有关。

  1. 寄存器(pc register)

与CPU有关。

常见问题:

  1. 数组索引越界异常;
  2. 空指针异常;

所有的引用类型变量,都可以赋值为一个null值。但是代表其中什么都没有。

数组必须进行new初始化才能使用其中的元素,如果只是赋值了一个null,没有进行new创建,那么将会发生空指针异常:NullPointerException。

获取数组的长度:数组名称.length。

遍历数组:使用循环,次数其实就是数组的长度。

数组元素的反转:对称位置的元素交换

         需要两个索引值,int min=0;int max=array.length-1;

         需要一个空变量;

数组可以作为方法的参数,当调用方法时,向方法的小括号进行传参,传递进去的其实是数组的地址值。

数组可以作为方法的返回值,返回的是数组的地址值;

面向对象:

面向过程:

当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。

面向对象:

         当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事。Eg:找一个JDK给我们提供好的array类,其中有一个toString方法,直接就能把数组变成想要的格式的字符串。

类:对一类事物的描述,是抽象的。

对象:一类事物的实例,是具体的。

类是对象的模版,对象是类的实体。

类的定义:

         属性:(是什么)成员变量→直接定义在类当中的,在方法外边;

         行为:(能做什么)成员方法→去掉static关键字

Public class definite{

         成员变量

         成员方法

}

通常情况下,一个类并不直接使用,需要根据类创建一个对象,才能使用。

  1. 导包:指出需要使用的类,在什么位置。(对于和当前类属于同一个包的情况,可以省略导包语句不写。)

import 包名称.类名称;

  1. 创建

类名称 对象名=new 类名称();

  1. 使用

使用成员变量:对象名.成员变量名→如果未赋值,会有默认值

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

面向对象编程oop:→ 谁的数据谁处理

开发一个一个的对象,把数据交给对象,再调用对象的方法来完成对数据的处理。

1、面向对象编程有什么好处?

         符合人类思维习惯,编程更简单、更直观。

2、程序中的对象到底是什么?

         对象本质上是一种特殊的数据结构。相当于一张表,表中是什么数据,对象处理的就是什么数据。

3、对象是怎么出来的?

         用class设计对象,class是类,也称为对象的设计图(或者对象的模板)。类中变量用来说明可以处理什么数据,类中方法用于描述对象有什么功能,也就是可以对数据进行什么样的处理。

对象在计算机中的执行原理:

如何识别引用类型的变量?

Student s1 = new Student ( );

s1变量中存储的是对象的地址,因此变量s1也称为引用类型的变量。

                                                                                                                                                                                                                                                                                                                  

注意:当堆内存中的对象,没有被任何变量引用(指向)时,就会判定为内存中的“垃圾”。

Java存在自动垃圾回收机制,会自动清除掉垃圾对象,程序员不用担心。

This关键字:

         this就是一个变量,可以用在方法中,来拿到当前对象。

         this主要用来解决:变量名称冲突问题。

构造器:

         和类名一样的方法名,且没有返回值。

         特点:创建对象时,对象会去调用构造器。

         构造器常见应用场景:创建对象时,同时完成对对象成员变量(属性)的初始化赋值。

         注意事项:①类在设计时,如果不写构造器,Java是会为类自动生成一个无参构造器的。②一旦定义了有参数构造器,Java就不会帮我们的类自动生成无参构造器了,此时最好自己手写一个无参数构造器。

面向对象三大特征:封装、继承、多态;

封装:

         用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。

         封装设计规范:合理隐藏、合理暴露

                  Private double score;SetScore方法:赋值;getScore方法:取值;

实体JavaBean

         什么是实体类? → 就是一种特殊形式的类(用于保存数据的Java类,可以用它创建对象,保存某个事务的数据。)

         ①这个类中的成员变量都要私有,并且要对外提供相应的getXXX,setXXX方法。②类中必须要有一个公共无参的构造器。

         实体类有啥应用场景:实体类只负责数据存取,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离。(实体类对应的是软件开发里现在比较流行的开发方式,数据和数据的业务处理相分离)

定义类来创建对象使用?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值