Java编程基础阶段笔记 day 07 面向对象编程(上)
|
面向对象编程 |
|
笔记Notes
|
1.创建一个类,并在类中提供必要的属性和方法 2.由类派生出对象。(创建对象) 3.调用对象中的属性和方法。(对象名.属性名/方法名) //创建一个类 class Person{ //属性 String name; int age; char sex; //方法 public void run(){ System.out.println(name + "跑起来"); } public void say(){ System.out.println(name + "今年" + age); } } // main 方法中 Person person = new Person(); //调用属性 :对象名.属性名 person.name = "王庆港"; //给属性赋值 person.age = 23; //获取属性的值 String name = person.name; System.out.println("name=" + name); //调用方法 :对象名.方法名 person.run(); person.say();
①按照数据类型分 :基本数据类型 vs 引用数据类型 ②按照位置分 :成员变量 vs 局部变量
①变量的声明的格式都是一样的。 ②变量都有作用域 ③变量都是先声明后使用
①局部变量:在方法里,方法的形参,构造器中,构造器的形参,代码块 ②成员变量: 在类中方法等结构外
①局部变量:不能使用权限修饰符修饰 ②成员变量:可以使用四种权限修饰符(public protected 缺省的(default) private)
①局部变量:在内存的栈中 ②成员变量:在内存的堆(对象)中
①局部变量 :没有默认值 ②成员变量 :有默认值(和数组元素的默认值是一样的) byte,short,int,long -> 0 float,double -> 0.0 boolean -> false char -> \u0000 引用数据类型 -> null class Animal{ //属性(成员变量) public String name = "动物"; int legs; protected boolean isLive = true; {//代码块 String address = "";//局部变量 } public Animal(){} //构造器 public Animal(int sex){//构造器的形参 int a = 10;//局部变量 } //方法 public void say(int sex){//方法的形参 //局部变量 int age = 10; age = 20; name = "大锤"; } }
修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){ 方法体程序代码 return 返回值; }
①void/具体的类型(基本数据类型、引用数据类型): ②void : 表示该方法没有返回值 具体的类型 :调用该方法会有返回值。 注意:返回数据需要使用return关键字。return 后面跟需要返回的数据。
(形参相同的情况下,同一个类中的方法名不能相同)。
①作用 :用来通知方法的调用者调用此方法时需要传递数据。 ②注意:实参的类型必须和形参的类型保持一致
注意 :只有调用方法时方法体才会执行。 对象数组题目: 定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。 问题一:打印出3年级(state值为3)的学生信息。 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息 提示: 1) 生成随机数:Math.random(),返回值类型double; 2) 四舍五入取整:Math.round(double d),返回值类型long。 class Student1{ int number; int state; int score; @Override public String toString() { return "Student1 [number=" + number + ", state=" + state + ", score=" + score + "]"; } } public class StuInfo { public static void main(String[] args) { // 创建对象数组 Student1[] studentArr = new Student1[20]; // 循环创建对象并赋值,传给对象 for (int i = 0; i < 20; i++) { Student1 student1 = new Student1(); student1.number = i; student1.state = (int)Math.round( (Math.random()*7)); student1.score = (int) (Math.random()*100); studentArr[i] = student1; } System.out.println("---------打印排序前的学生信息-------------"); for (int i = 0; i < studentArr.length; i++) { System.out.println(studentArr[i]); } System.out.println("----------打印state为3的学生信息---------"); // 循环查找对象数组中state值为3的对象,打印输出对象信息 for (int i = 0; i < studentArr.length; i++) { if (studentArr[i].state == 3) { System.out.println(studentArr[i]); } } System.out.println("----------------------------------------"); // 使用冒泡排序按学生成绩排序,并遍历所有学生信息 // 思路:两个循环遍历数组中的对象的成绩,若对象的成绩小于后一个,则交换对象的位置 for (int i = 0; i < studentArr.length -1; i++) { // 外层循环决定冒泡排序的次数,为数组长度-1 for (int j = 0; j < studentArr.length - i -1; j++) { // 内层循环决定每次多少次冒泡,为 if (studentArr[j].score > studentArr[j+1].score) { // 如果前面的对象小于大于后面的,就叫交换类数组地址 Student1 temp = studentArr[j]; studentArr[j] = studentArr[j+1]; studentArr[j+1] = temp; } } } // 注意!!!!!!!!!! // 冒泡排序交换的值的数组的下标为内循环的循环变量 System.out.println("------打印排序后的信息-------"); // 打印排序后的信息 for (int i = 0; i < studentArr.length; i++) { System.out.println(studentArr[i]); } } }
①在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 ②与返回值类型无关,只看参数列表,且参数列表必须不同。 (参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。 ③示例: //返回两个整数的和 int add(int x,int y){return x+y;} //返回三个整数的和 int add(int x,int y,int z){return x+y+z;} //返回两个小数的和 double add(double x,double y){return x+y;} 注意!!: ①不同的形参列表 :形参的个数,顺序,类型不同 ②方法的重载和权限修饰符,返回值类型,形参的名字无关。 ③判断方法:只看 方法名 + 形参列表(看形参和实参的类型)
①可变形参的底层就是一个数组 ②在可变形参的方法中,和可变形参相同类型的数组的方法不构成重载。 ③在形参列表中可变形参只能放在最后 ④在同一个方法的形参列表中只能有一个可变形参。 ⑤ 可变形参的个数可以是0个1个或多个
在创建对象以后,就可以通过对象名.属性名这种方式对属性直接进行操作。这种操作对于属性只有类型和范围的限制。但是在实际开发中我们会有更多的其它的限制条件。而这些限制条件又不能在属性的声明处加以限制。我们采取取如下方式 ①使用权限修饰符对属性进行权限的限制,那么在类的外部就不能随意的再调用类中的属性 ②提供公共的方法,在方法中可以加以限制其它的条件。然后可以通过该方法给属性赋值和获取属性的值。
①将属性私有化。(private修饰属性) ②提供公共的set/get方法。(set方法用来给属性赋值,get方法用来获取属性的值)
①可以使用四种权限修饰符:private,缺省的,protected,public ②四种权限修饰符可以修饰 :属性,方法,构造器,内部类 ③类只能被public和缺省的修饰。
① 默认初始化:int a; ② 显式初始化:int a = 0; ③ 构造器中初始化 ④ 通过“对象.属性“或“对象.方法”的方式赋值
① - ② - ③ - ④
①它在方法内部使用,即这个方法所属对象的引用; ②它在构造器内部使用,表示该构造器正在初始化的对象。
具体的:我们可以用this来区分属性和局部变量。 public void setAge(int age){ age = age;//局部变量 :就近原则(属性名和局部变量名相同时默认调用的是局部变量) System.out.println("===========" + age); }
|
|
总结Summary |
|
Java编程基础阶段笔记 day 07 面向对象编程(上)的更多相关文章
- Java编程基础阶段笔记 day01 Java语言概述
目录内容 DOS命令 电脑配置 Java语言的特性 Java两种核心机制 Java语言环境搭建 第一个Java程序 注释 Java语句说明 编程风格 作业 常用的DOS命令 dir : 列出当 ...
- Java编程基础阶段笔记 day04 Java基础语法(下)
day04 Java基础语法 (下) 笔记Notes要点 switch-case语句注意 switch-case题目(switchTest5) 循环执行顺序 if-else 实现3个整数排序 Stri ...
- Java编程基础阶段笔记 day06 二维数组
二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的异常 二维数组 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Python(三)基础篇之「模块&面向对象编程」
[笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- Python基础入门(6)- 面向对象编程
1.初识面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本篇随笔将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象 ...
- Objective-C 基础教程第三章,面向对象编程基础知
目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...
- python笔记 - day7-1 之面向对象编程
python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...
随机推荐
- Salesforce Admin篇(一)Duplicate Management
参考资料:https://help.salesforce.com/articleView?id=managing_duplicates_overview.htm Salesforce 很重要的一个平台 ...
- 跟我学SpringCloud | 第八篇:Spring Cloud Bus 消息总线
SpringCloud系列教程 | 第八篇:Spring Cloud Bus 消息总线 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如无特 ...
- 如何查看jsplumb.js的API文档(YUIdoc的基本使用)
目录 一.问题描述 二. 处理方法 三. YUIdoc工具介绍 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端> ...
- java截取避免空字符丢失
1. 场景描述 数据后端是Hbase等nosql数据库,返回的数据以逗号分隔,java后端获取数据后,需要新增组装数据后再返回给前端. 2. 问题解决 2.1 问题定位 本来用的java的split进 ...
- 视频4K技术的解读
前几年4K技术就已经有人提及,今年更是成了一个非常热门的词汇,而且4K技术已经普遍应用于各类终端,如电视机.机顶盒.手机等.那么如何来理解4K这个东东呢?今天博主就谈谈自己对4K技术的认识. 博主认为 ...
- .Net微信网页开发之JSSDK使用步骤和配置信息timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)的生成获取讲解
前言: 因为接下来会有几篇关于微信JS-SDK功能使用的文章,主要会对微信分享,获取设备信息,获取地理位置,微信扫一扫这几个功能进行讲解.而这几个功能都是围绕着微信JS-SDK实现的,首先使用微信JS ...
- MLlib特征变换方法
Spark1.6.2.2.3 PCA 算法介绍: 主成分分析是一种统计学方法,它使用正交转换从一系列可能相关的变量中提取线性无关变量集,提取出的变量集中的元素称为主成分.使用PCA方法可以对变量集合进 ...
- [ERROR]:INST-07008: Oracle 主目录(O) 位置的验证失败。用户没有创建主目录/实例位置的权限
安装weblogic12.1.3.0时,输入的安装命令是: 老是报这个错误. 百度半天好像没人报过这错……看来只有我这么粗心了…… 后来发现wls.rsp里面的Oracle_HOME指向目录错误,修改 ...
- 个人永久性免费-Excel催化剂功能第73波-数据转换:单行多项目转多行单项目
数据分析的前半部分数据处理.转换等工作是一个又脏又累的活,默默地干着,却又不出彩让人看到过程的艰辛和成果.如何让这个过程可以更加轻松一点,是Excel催化剂为大家所想的,今天带来一大刚需的数据转换功能 ...
- HDFS的HA(高可用)
HDFS的HA(高可用) 概述 (1)实现高可用最关键的策略是[消除单点故障].HA 严格来说应该分成各个组件的 HA 机制:HDFS 的 HA 和 YARN 的 HA. (2)Hadoop2.0 之 ...