对象
(1)一切可以被描述的事物,叫做实体
(2)属性:
指的是对象的特征
(3)方法:
指的是对象的 动作,行为
--------------------------------------------------
类
相似对象的集合。是一个抽象的概念
------------------------------------------------
类和对象
区别和联系
1. 类是抽象的,对象是类的具体化
2. 类是模板,规定了所有对象共同的属性和方法。
3. 对象是通过模板创建出来的具体的一个实体;类是一种数据类型,是引用数据类型(存的地址),对象是堆中的引用变量
----------------------------------------------------------------------
面向对象的思想
什么是面向对象思想,可以参考https://blog.csdn.net/chenqiuping_ls/article/details/53609807
1. 符合人类认知规律和思考习惯
2. 以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能
3. 对象定义
(1) 访问修饰符 class 类名{
//类体:
属性;
方法;
}
(2)规范
帕斯卡命名法。多个单词组成,每个单词首字母都大写
例如:Scanner、String、System
4. 方法
(1) 访问修饰符 返回值类型 方法名(参数1,参数2…..){
方法体;
}
带返回值的方法:
注意:
1.声明的类型 必须与 返回的类型 一致;
2.只能返回一个值;
(2) 规范
骆驼命名法
5. Thisthis 表示本类对象,哪个对象调用的这个方法,this就是哪个对象this可以用来调用本类的成员变量和方法
6. 方法的优势:
代码(功能)封装;
代码的重用
方便维护
7.方法调用
注意:
1.不同类中调用方法用对象名调用;
2.同一个类中自定义方法之间互相调用,是
使用 this调用的,this可以省略;
3.同一个类中,主方法调用其它方法必须用
对象调用。(因为主方法是 static)
8. 成员变量和局部变量:
在类中直接定义的是成员变量,在方法中的是局部变量
作用域:成员变量在整个类中有效
局部变量只在定义它的方法中有效
初始化:成员变量自动初始化
局部变量必须我们自己初始化
优先级:如果成员变量和局部变量同名,优先使用局部变量,可以用this来区分,this调用的是成员变量
9.一个文件中定义多个类:
注意:
只能有一个类是public修饰的;
public修饰的类的名字与文件名必须一样;
同一个程序包中不能存在同名的类。
10. 类前注释
/**
* 交通工具类
* @author daidai
* @version 2018-5-3 1.0
*/
可以导出帮助文档
11. 无参方法
带参方法
注意:
1.定义了形参,调用时必须传参;
2.传参 时。类型 ,个数,顺序一致。
12.参数传递:
参考文章:java中传递参数的两种方式https://blog.csdn.net/a329661511/article/details/78474763
1.参数是值类型;
值不变,不同的空间;
2.引用类型
两个引用 指向同一个对象,值变了;
3.引用类型
两个引用 指向不同的对象,值没变;
13. 对象数组
//遍历
for(person p :pens){
if(p == null){
break;
}
p.show();
}
14. 匿名对象的使用方式只能使用一次
-----------------------------
BigInteger 类型的使用
//阶乘
package day13;
import java.math.BigInteger;
public class Ex3 {
public static void main(String[] args) {
BigInteger sum = new BigInteger("1");
int n =100;
for(int i = 1 ;i <= n ;i++){
sum = sum.multiply(BigInteger.valueOf(i));
}
System.out.println(sum);
}
}
------------------------------------
//可变参数方法 ...
package day13;
import java.util.Arrays;
class Test{
public void f(int [] arr){
System.out.println(Arrays.toString(arr));
}
public void fff(int ...arr){
System.out.println(Arrays.toString(arr));
System.out.println(arr.length);
}
}
public class Ex7 {
public static void main(String[] args) {
Test t = new Test();
int [] arr = {11,22,33};
t.fff(arr);
}
}
可变参数方法优势:传参,灵活,底层是数组
可变参数与数组参数的区别:
1. 数组作为参数,传参只能传一个数组
可变参数可以传多个值,可以不传值,可以传一个数组
2. 数组参数,可以有多个
可变参数,只能有一个
3. 数组参数,位置任意
可变参数,必须放在最后
----------------------------------------------------------
递归
1. 一个方法 反复调用自身;
2. 能有结束,反复调用自身的条件。(出口)
--------------------------------------------------------
命令行传参数