java学习笔记宋红康版本-04

5 篇文章 3 订阅

Java面向对象

万事万物皆对象
在这里插入图片描述
匿名对象

class Student{
int age = 3;
String sex;
}

public class a {
	public static void main(String[]args){
	System.out.println(new Student().age)

	//有名字的对象
	Student s = new Student();
		
	//匿名对象:
	new Student()
	}
}

匿名对象其实就是对象,对象具有的功能匿名对象都具有,只不过有名字的对象可以重复使用,匿名对象只能用一次罢了。
匿名对象平时使用场景较少,日常项目开发中很少使用,一般框架层面才会用到

特点

  1. 由于我们没有记录堆内存对象的地址值,所以只能用一次,再次使用就找不到了
  2. 匿名对象的好处就是使用完毕就是垃圾,可以在垃圾回收器空闲时回收,节省内存空间

方法的重载

什么是重载:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。

重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同。调用时,根据方法参数列表的不同来却别。

 public static int sum(int a, int b) {
        return a + b;
    }

    //三个数相加
    public static int sum(int a, int b, int c) {
        return a + b + c;
    }

    //四个数相加:
    public static int sum(int a, int b, int c, int d) {
        return a + b + c + d;
    }

方法的可变个数类型形参!(javaSE5新特性)

/*
    * 可变参数
    * 1、java SE 5 特性
    * 2、形式 Object... 本质Object数组。int... args 自动装箱
    * 3、位置必须是方法参数的最后一个参数
    * 4、调用可变参数的方法不提供参数是 数组不为null,数组length为0
    */
   @Test
   //@Test是注解表达式里的测试 等价于main方法
   public void testVarArgument() {
   	// 没有提供参数
   	varArg();
   }
   
   public static void varArg(Integer... args) {
   	if(args == null) {
   		System.out.println("没有提供参数,数组为null");
   	} else {
   		System.out.println("数组大小为:" +args.length);
   	}
   }

方法参数的值传递机制
方法必须由所在的类或对象调用才有意义。若方法含有参数:
形参:方法声明时的参数
实参:方法调用时实际传给形参的参数值

Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参
形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参

方法的递归调用(自己调用自己)
什么是递归:
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调;
用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过;
程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

递归必须要有的三个条件

  1. 边界值必须要有
  2. 递归条件前进代码
  3. 递归条件结束判断代码
    当边界值未达到时递归继续前进,开始新一轮循环,边界值达到条件则递归结束。
    在这里插入图片描述
package 递归调用;
/**
 * 递归调用,计算5的阶乘
 * 递归调用就是在方法中调用自己的方法
 * @author Administrator
 *
 */
public class Jiecheng {

    public static void main(String[] args) {
        long r=Jiecheng.resursion(5);
        System.out.println(r);
    }
    public static long resursion(int i){
        if(i==1||i==0){
            return 1;
        }else{
            return i*resursion(i-1);
        }
    }

}

面向对象的特征之一(封装与隐藏)

什么是封装?
在这里插入图片描述
将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。
简而言之封装就是 封装好类只管使用不管他到底是如何实现某些功能的。

权限修饰符的使用
Java中四种权限修饰符:public(公共的)、protected(受保护的)、default(默认的)、private(私有的)
在这里插入图片描述
状态修饰符:static(静态的),final(最终的)
static(静态的)
可以修饰成员变量,成员方法,不能修饰类,不能修饰构造方法。
被修饰的变量,方法可以通过类名进行调用。
final(最终的)
可以修饰类,成员变量,成员方法,不能修饰构造方法。
修饰的类不能被继承,被修饰的变量是常量,被修饰的方法不能被继承。
抽象修饰符:abstract(抽象的)
abstract(抽象的)
不能修饰构造方法,不能修饰成员变量,可以修饰类(接口),成员方法
被修饰的类(接口)不能被实例化,只能被继承,被修饰的成员方法在子类中必须被重写

构造器
构造器的注意事项:
1.构造器的名称必须和类名一致;
2.一个类中可以定义多个构造器,但是构造器的参数列表必须不同;
3.如果我们没有手动定义构造器,则java系统会提供一个默认的构造器给我们使用。一旦我们定了构造器,则系统会把构造器收回;
4.构造器的作用:实例化对象,给对象赋初始值;

public class a{
 public int age;
 public a(){ //构造器初始化时默认赋值age=18;
	age=18;//如果没写构造器,系统会自动生成构造器
}
@Test
a();
}

JavaBean
什么是JavaBean
在这里插入图片描述
JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点:

1.可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。

2.可利用JavaBean的优点。将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。

UML图
有待填坑 目前没听懂

this关键字
在这里插入图片描述

class Person {
	int age;
	public Person(int age) {
		this.age = age;
	}
	public int getAge() {
		return this.age;
	}
}

package、import 关键字的使用

1、包–package
包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名。如果在类的定义之前没有使用package定义包名,那么该类就属于缺
省的包。

包的作用:
可以更好的组织类,包与文件夹类似,文件夹可以将不同的文件放在同一个文件夹中,而包也可以将不同的类文件放在同一包中。减少类名的冲突问题,这也与文件夹类似,同一文件夹中的文件不能重名,不同文件中的 文件可以重名,同一包中的类名不能重复,不同包中的类名可以重复,对包中的类起了一定的保护作用。

包的使用:
使用 package 关键字指明类所在的包。 package 语句必须在文件的最前面。 编译时可使用 javac –d . Test.java 自动产生包需要目录。 可以使用 java testPackage.Test来执行编译后的代码。

2、导入–import
使用了包机制后,如果在一个类中使用了其他包中的类,需要使用 import 来引入。

import 的使用:
直接引用指定的类,如 import java.util.Vector。引用一个包中的多个类,如 import java.awt.号代替类名,但不能代替包名,如import java.awt.,只引用 java.awt 下的类,而不引用 java.awt 下的子包里面的类。import java.awt.F,这种使用方法是错误的。import 语句在所有类定义之前,在 package 定义之后。 import 只告诉编译器及解释器哪里可以找到类、变量、方法的定义,而并没有将这些定义 引入代码中。

包中类的使用:
如果要使用的类是属于 java.lang 包的,那么可以直接使用类名来引用指定的类,而不需要加上包名,因为包 java.lang 不用显示使用 import,它是缺省引入的。 如果要使用的类在其它包(java.lang 除外)中,那么可以通过包名加上类名来引用该类, 如java.awt.Font。对于经常要使用的类(该类在其它包中),那么最好使用 import 引用指定的包,如java.awt.*。
如果import引入的不同的包中包含有相同的类名,那么这些类的使用必须加上包名。

MVC设计模式
在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
<span style="color:#404040;">本教程特点:</span><br /><span style="color:#404040;">1.更适合零基础学员:</span><br /><span style="color:#404040;">·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白</span><br /><span style="color:#404040;">·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千斤</span><br /><br /><span style="color:#404040;">2.课程内容推陈出新:</span><br /><span style="color:#404040;">·</span><strong>基于JDK 11</strong><span style="color:#404040;">,将Java8、Java9、Java10、Java11新特性一网打尽</span><br /><span style="color:#404040;">·课程中,</span><strong>Eclipse</strong><span style="color:#404040;">和</span><strong>IDEA</strong><span style="color:#404040;">这两种企业一线开发环境都使用到了</span><br /><br /><span style="color:#404040;">3.技术讲解更深入、更全面:</span><br /><span style="color:#404040;">·课程共30天,715个知识视频小节,涉及主流Java使用的方方面面,全而不冗余</span><br /><span style="color:#404040;">·全程内容涵盖</span><strong>数据结构、设计模式、JVM</strong><span style="color:#404040;">内存结构等深度技术</span><br /><span style="color:#404040;">·企业级笔试面试题目深入源码级讲解,拒绝死记硬背</span><br /><br /><span style="color:#404040;">4.代码量更大、案例更丰富、更贴近实战:</span><br /><span style="color:#404040;">·Java语言基础阶段:</span><strong>12720</strong><span style="color:#404040;">行代码,Java语言高级阶段:</span><strong>11684</strong><span style="color:#404040;">行代码</span><br /><span style="color:#404040;">·课堂实战项目</span><strong>3套</strong><span style="color:#404040;">,课后实战项目</span><strong>2套</strong><br /><span style="color:#404040;">·近百道企业面试真题精讲精练、极具实战性</span>
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

a_yua

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值