当前位置: 首页 > news >正文

java 3 4_3-4 Java基础第四天

[TOC]

# 面向对象思想特点

面向对象是基于面向过程的编程思想

- 面向过程:强调的是每一个功能的步骤

- 面向对象:强调的是对象,然后由对象去调用功能

二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。

# 类与类之间的关系

- 继承关系

- 关联关系

# 类与对象的关系

- 类(class)和对象(object)是面向对象的核心概念。

- 类是对一类事物描述,是抽象的、概念上的定义

- 对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

~~~

“万事万物皆对象”

~~~

# java类及类的成员

属 性:对应类中的成员变量

行 为:对应类中的成员方法

Field = 属性 = 成员变量,Method = (成员)方法 = 函数

## 创建java自定义类步骤:

1.定义类(考虑修饰符、类名)

2.编写类的属性(考虑修饰符、属性类型、属性名、初始化值)

3.编写类的方法(考虑修饰符、返回值类型、方法名、形参等)

## 成员变量(属性)和局部变量的区别

### 成员变量

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

- 成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。

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

- 成员变量的权限修饰符可以根据需要,选择任意一个

### 局部变量

- 局部变量只定义在局部范围内,如:方法内,代码块内等。

- 局部变量存在于栈内存中。

- 作用的范围结束,变量空间会自动释放。

- 局部变量没有默认初始化值,每次必须显式初始化。

- 局部变量声明时不指定权限修饰符

## 类的访问机制

- 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)

- 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员

## 匿名对象

- 我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象。如:new Person().shout();

- 使用:如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。我们经常将匿名对象作为实参传递给一个方法调用。

## 方法

- 什么是方法(函数)

- 方法只有被调用才会被执行

- 方法是类或对象行为特征的抽象,也称为函数。

- Java里的方法不能独立存在,所有的方法必须定义在类里。

~~~

修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2,…..{

程序代码

return 返回值;

}

~~~

### 其中:

- 形式参数:在方法被调用时用于接收外部传入的数据的变量。

- 参数类型:就是该形式参数的数据类型。

- 返回值:方法在执行完毕后返还给调用它的程序的数据。

- 返回值类型:方法要返回的结果的数据类型。

- 实参:调用方法时实际传给函数形式参数的数据。

## 重载的概念

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

### 重载的特点

与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。

## 方法的参数传递

- 方法,必须有其所在类或对象调用才有意义。若方法含有参数:

- 形参:方法声明时的参数

- 实参:方法调用时实际传给形参的参数值

- Java的实参值如何传入方法呢?

- Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。

## 体会可变参数的个数

说明:

- 1.可变参数:方法参数部分指定类型的参数个数是可变多个

- 2.声明方式:方法名(参数的类型名...参数名)

- 3.可变参数方法的使用与方法参数部分使用数组是一致的

- 4.方法的参数部分有可变形参,需要放在形参声明的最后

# 面向对象特征之一:封装和隐藏

1.Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:

- 隐藏一个类中不需要对外提供的实现细节;

- 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

- 便于修改,增强代码的可维护性

2.将某段实现特点功能的代码放到方法中(也叫封装)

## 类的成员之三:构造器(构造方法、构造函数)

### 构造器的特征

- 它具有与类相同的名称

- 它不声明返回值类型。(与声明为void不同)

- 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

### 构造器的作用

创建对象;给对象进行初始化

### 根据参数不同,构造器可以分为以下两个类

- 隐式无参构造器(系统默认提供)

- 显式定义一个或多个构造器(无参、有参)

**注意**:

- Java语言中,每个类都至少有一个构造器

- 默认构造器的修饰符与所属类的修饰符一致

- 一旦显式定义了构造器,则系统不再提供默认构造器

- 一个类可以创建多个重载的构造器

- 父类的构造器不可被子类继承

## 构造器重载

- 构造器一般用来创建对象的同时初始化对象。

- 构造器重载使得对象的创建更加灵活,方便创建各种不同的对象。

- 构造器重载,参数列表必须不同

# 关键字——this

在java中,this关键字比较难理解,它的作用和其词义很接近。

- 它在方法内部使用,即这个方法所属对象的引用;

- 它在构造器内部使用,表示该构造器正在初始化的对象。

- this表示当前对象,可以调用类的属性、方法和构造器

# String类的构造方法

- String(String original):把字符串数据封装成字符串对象

- String(char[] value):把字符数组的数据封装成字符串对象

- String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象

## 创建字符串对象两种方式的区别

通过构造方法创建的字符串对象和直接赋值方式创建的字符串对象有什么区别呢?

- 通过构造方法创建字符串对象是在堆内存。

- 直接赋值方式创建对象是在方法区的常量池。

### ==

- 基本数据类型:比较的是基本数据类型的值是否相同

- 引用数据类型:比较的是引用数据类型的地址值是否相同

## String类的判断功能

- boolean equals(Object obj):比较字符串的内容是否相同

- boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写

- boolean startsWith(String str):判断字符串对象是否以指定的str开头

- boolean endsWith(String str):判断字符串对象是否以指定的str结尾

## String类的获取功能:

- int length():获取字符串的长度,其实也就是字符个数

- char charAt(int index):获取指定索引处的字符

- int indexOf(String str):获取str在字符串对象中第一次出现的索引

- String substring(int start):从start开始截取字符串

- String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end

## 转换方法演示

- char[] toCharArray():把字符串转换为字符数组

- String toLowerCase():把字符串转换为小写字符串

- String toUpperCase():把字符串转换为大写字符串

## stringBuilder类概述

StringBuilder:是一个可变的字符串。字符串缓冲区类。

String和StringBuilder的区别:

- String的内容是固定的

- StringBuilder的内容是可变的

## StringBuilder类的常用方法

### A构造方法

~~~

new StringBuilder()

~~~

### B成员方法

~~~

public int capacity():返回当前容量 (理论值)

public int length():返回长度(已经存储的字符个数)

public StringBuilder append(任意类型):添加数据,并返回自身对象

public StringBuilder reverse():反转功能

~~~

相关文章:

  • php phar 文件使用,PHP如何操作phar文件
  • java使用xpath解析xml,java使用XPath解析xml
  • php脚本防护,PHP的一个EVAL的利用防范
  • php中背景图怎么设置不重复,css怎么让背景图片不重复
  • java标签更改显示,离子选项卡,如何在标签更改上显示微调器?
  • java读写二进制文件 移动指针 seek,《Java大学教程》—第20章 文件处理
  • php权限无需验证的控制器,控制器 · ThinkPHP5权限管理 · 看云
  • 两'参数粒子群matlab,SVM用粒子群优化参数
  • 数据在文本框中显示 php,在文本框中使用php和纯ajax从数据库加载数据
  • 数字信号处理matlab滤波器,数字信号处理matlab滤波器课程设计
  • matlab逆求贝塞尔函数变量值,MATLAB怎么求解有贝塞尔函数的问题,求高手帮帮忙,谢谢...
  • java 继承 默认作用域,Spring(三)——Bean的 继承关系、依赖关系、作用域
  • matlab中的newfis,(To be removed) Create new fuzzy inference system
  • php apache 301重定向,Apache下修改.htaccess实现301重定向方法汇总
  • php一对多关联,SpeedPHP/数据表一对多关联
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2017-09-12 前端日报
  • 2017届校招提前批面试回顾
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Git的一些常用操作
  • Java反射-动态类加载和重新加载
  • Making An Indicator With Pure CSS
  • Redux 中间件分析
  • select2 取值 遍历 设置默认值
  • Vue实战(四)登录/注册页的实现
  • Zepto.js源码学习之二
  • 翻译--Thinking in React
  • 扑朔迷离的属性和特性【彻底弄清】
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用common-codec进行md5加密
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 自定义函数
  • 带你开发类似Pokemon Go的AR游戏
  • 湖北分布式智能数据采集方法有哪些?
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)fgets与fputs函数详解
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)计算机毕业设计大学生兼职系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (转)3D模板阴影原理
  • .Net 6.0 处理跨域的方式
  • .NET企业级应用架构设计系列之应用服务器
  • .net中的Queue和Stack
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [Android Studio] 开发Java 程序
  • [BUG]vscode插件live server无法自动打开浏览器
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C++]priority_queue的介绍及模拟实现
  • [Django 0-1] Core.Checks 模块
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件