返回顶部
首页 > 资讯 > 后端开发 > Python >java基础的详细了解第二天
  • 691
分享到

java基础的详细了解第二天

2024-04-02 19:04:59 691人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1、方法的基本定义2、方法重载3、方法的递归调用4、面向对象的前身是面向过程5、类与对象内存分析引用传递总结1、方法的基本定义 限制条件:本次所讲解的方法指的是在主类中定义,并且

1、方法的基本定义

限制条件:本次所讲解的方法指的是在主类中定义,并且由主方法由主方法直接调用。

方法是指就是一段可以被重复调用的代码块。 在java里面如果想要进行方法的定义,则可以使用如下的方法进行完成。


public static 方法返回值 方法名称([参数类型 变量,....]){
    方法体代码 ; 
     return [返回值];
}

在定义方法的时候对于方法的返回值由以下两类:void没用返回值和数据类型(基本类型、引用类型)。


public class TestDemo{
   public static void main(String args[]){
   //如果要在主方法里面调用该方法,该方法一定要用static进行修饰
   	print();	//主方法里面直接调用
   	print();	//主方法里面直接调用
   	print();	//主方法里面直接调用
   }
   public static void print(){
   	System.out.println("Hello,World!");
   }
}

但是有一点要特别的注意就是当返回值为void类型的时候,那么该方法当中可以直接使用return来直接结束调用。在一般情况下和if判断使用。


public class TestDemo{
	public static void main(String args[]){
	//如果要在主方法里面调用该方法,该方法一定要用static进行修饰
		print1(10);	//主方法里面直接调用
		print1(20);	//主方法里面直接调用
		print1(30);	//主方法里面直接调用
	}
	public static void print(){
		System.out.println("Hello,World!");
	}
	public static void print1(int x){
		if(x == 20){	//表示方法结束的判断
			return ;	//此语句之后的代码不在执行
		}
		System.out.println("x = " + x);
	}
}

image-20210726155126462

image-20210726155831793

2、方法重载

方法的重载是指:方法名称相同,参数的类型或个数不同。


public class TestDemo2{
	public static void main(String args[]){
	//如果要在主方法里面调用该方法,该方法一定要用static进行修饰
		System.out.println(add(10,20));	//主方法里面直接调用
		System.out.println(add(10,20,30));	//主方法里面直接调用
		System.out.println(add(10.1,20.1));	//主方法里面直接调用
	}
	public static int add(int a,int b){
		return  a + b;
	}
	public static int add(int a,int b,int c){
		return a + b + c;
	}
	public static double add(double a, double b){
		return a + b;
	}
}

image-20210726160923526

在方法重载的时候有一个重要的原则就是要求方法的返回值类型一定要相同。

通过用System.out.println()输出发现所有的类型都可以进行输出,由此我们可以发现这个方法是一个重载的方法。

3、方法的递归调用

方法的递归调用指的是一个方法调用自己的形式。如果要进行方法的递归操作往往都具备以下特点

方法必须有一个递归的结束条件

方法在每次递归处理的时候一定要做出一些变更

image-20210726164358510

计算60!


public class TestDemo4{
	public static void main(String args[]){
		System.out.println(mul(60));	
	}
	public static double mul(double num){
		if (num == 1){
			return 1;
		}
		return num * mul(num - 1);
	}
}

计算结果:

8.320987112741392E81

其实我们在使用while的循环操作大部分都可以使用递归,而使用递归是因为主要一个方法可以执行的操作很多,而且结构简单、好。

4、面向对象的前身是面向过程

两者的区别:笼统的将最好的例子就是面向过程是解决问题,面向对象是模块化设计。对于现在的程序就像是汽车组装,不同的工厂生产不同零件,将这些零件组装在一起可以形成一个汽车,当我们零件坏了的时候还可以进行配装。

面向对象在实际上还有很多的特点

  • 封装性:内部的操作对外部而言是不可见的。
  • 继承性:在上一辈的基础上继续发展。
  • 多态性:这是我们最为重要的一个环节,利用多态性才可以得到良好设计。

三个阶段:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程) 专业化术语

5、类与对象

类和对象是面向对象核心所在,也是所有概念的基础。类属于我们的引用类型,所以类的使用会牵扯到我们的内存分配问题

所谓的类就是一个共性的概念,而对象就是一个具体可以使用的事物。

类的组成:方法(操作行为)、属性(变量,描述每一个对象的具体特点)。

类的定义一般有class进行声明


class 类名称{
	属性1;	//属性可以是多个
    属性2;
}

此时的方法不在由主类进行调用,而是要通过对象进行调用。

声明实例化对象


class Person{	//定义一个类首先要将类的名称每个首字母进行大写
	public void info(){
		System.out.println("name = "+ name + "\nage = " + age);
	}
}
public class TestDemo5{
	public static void main(String args[]){
		//实例化对象第一种方式
		Person person = new Person();
		person.name = "张三";	//设置对象中的属性值
		person.age = 13;	//设置对象中的属性值
		person.info();
		//实例化对象第二种方式
		Person person1 = null;
		person1 = new Person();
		person1.info();
	}	
}

image-20210726175038491

image-20210727163822257

image-20210727161759502

image-20210727164325831

引用数据类型最大的特征在于内存的分配操作,只要出现关键字new那么只有一个解释:开辟新的内存(内存是不可能无限开辟的,所以这个时候所谓的性能调优调整的就是内存问题)。

内存分析

我们使用的内存空间分为两块:堆内存空间(保存真正的数据,保存对象的属性信息)和栈内存空间(保存的堆内存的地址,堆内存操作权,简单理解叫保存对象的名称),所有数据类型必须在开辟空间后才能使用。如果使用了未开辟的数据类型则会出现NullPointerException,只有引用数据类型(数组、类、接口)才会产生此类异常,以后出现了根据错误位置观察其是否进行实例化对象。

image-20210727164540802

引用传递

引用传递的本质就在于别名,而这个别名只不过是放在我们栈内存当中,一块堆内存可以被多个栈内存所指向。


class Person{	//定义一个类首先要将类的名称每个首字母进行大写
	String name;
	int age;
	public void info(){
		System.out.println("name = "+ name + "\nage = " + age);
	}
}
public class TestDemo5{
	public static void main(String args[]){
		//实例化对象第一种方式
		Person per = new Person();
		per.name = "张三";	//设置对象中的属性值
		per.age = 13;	//设置对象中的属性值
		per.info();
		//实例化对象第二种方式
		Person per1 = null;
		per1 = new Person();
		per1.name = "小于子";
		per1.age = 30;
		per1.info();
		//此步骤就是引用传递的操作
		Person per2 = per1;
		per2.name = "狗剩";
		per1.info();
	}	
}

image-20210727170204489

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: java基础的详细了解第二天

本文链接: https://lsjlt.com/news/132162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java基础的详细了解第二天
    目录1、方法的基本定义2、方法重载3、方法的递归调用4、面向对象的前身是面向过程5、类与对象内存分析引用传递总结1、方法的基本定义 限制条件:本次所讲解的方法指的是在主类中定义,并且...
    99+
    2024-04-02
  • java基础的详细了解第一天
    目录1、Java主要特点2、计算机的高级汇编语言类型:3、JVM(Java Visual Machine)4、编写第一个Java程序并运行5、CLASSPATH指的是类加载路径6、程...
    99+
    2024-04-02
  • java基础的详细了解第三天
    目录1、private实现封装处理2、构造方法与匿名对象3、简单java类4、数组总结1、private实现封装处理 如果像想要知道封装,首先必须清楚如果没有封装会怎么样? 没有封装...
    99+
    2024-04-02
  • java基础的详细了解第四天
    目录1、数组数组的引用传递数组的静态初始化数组与方法的调用Java对数组的支持数组的数据分析数组排序数组的转置数组的二分查找法对象数组总结1、数组 数组的引用传递 public ...
    99+
    2024-04-02
  • java基础的详细了解第五天
    目录1、String类1.1两种对象实例化方式1.2字符串比较1.3字符串常量是String的匿名对象1.4String两种实例化方式区别1、分析直接赋值方式2、构造方法赋值1.5字...
    99+
    2024-04-02
  • java基础的详细了解第六天
    目录1、this关键字1.1 “this.属性”表示本类属性1.2“this”表示调用本类方法1.3“this”表示当前对象1.4引用传递进阶分析1.5对象比较1.6引用传递实际应用...
    99+
    2024-04-02
  • java基础的详细了解第七天
    目录1、static关键字1.1 使用static关键字定义属性1.2 使用static定义方法1.3 分析主方法1.4 关键字的使用2、代码块2.1 普通代码块2.2 构造块2.3...
    99+
    2024-04-02
  • java基础的详细了解第八天
    目录1、多态性1.1 向上转型1.2 向下转型2、抽象类2.1 抽象类的基本概念抽象方法为什么不能实例化对象?关于抽象类的若干中疑问?3、接口3.1 接口的基本概念3.2 接口的使用...
    99+
    2024-04-02
  • java基础的详细了解第九天
    目录1、匿名内部类2、Object类简介 2.1 取得对象信息toString()2.2 对象的比较equals()2.3 Object接口引用数据类型3、包装类3.1 装箱与拆箱3...
    99+
    2024-04-02
  • 新手了解java基础知识(二)
    目录算数运算符例子关系运算符例子逻辑运算符例子赋值运算符Java运算符优先级总结算数运算符 算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 ...
    99+
    2024-04-02
  • 第二天学习_基础数据类型整理
    1. int - 整型    bit_length() 是int唯一的方法 2. bool - 数据类型之间的转换   int(字符串)->把字符串转换成数字   str(数字)->把数字转换成字符串 3. str - 字符串...
    99+
    2023-01-31
    第二天 数据类型 基础
  • 【30天python从零到一】---第三天:python基础语法(二)
    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:&...
    99+
    2023-09-04
    python 开发语言
  • 学习python的第十二天(文件的详细操
    一.文件打开常用的三总方式 1.文件打开r模式 只读不能写 with open('a.txet','r',encoding='gbk') as a: # 文件路径 文件打开方式 解码方式 变量名 ...
    99+
    2023-01-31
    二天 文件 详细
  • 零基础学算法100天第7天——二维差分(差分矩阵)
    本文已收录于专栏 🌲《零基础学算法一百天》🌲 学习指引 1、什么是差分矩阵?2、差分矩阵的核心操作3、预处理得到差分数组4、差分矩阵模板题 ⭐...
    99+
    2023-10-05
    矩阵 算法 线性代数 蓝桥杯 学习
  • Java面试题冲刺第一天--基础篇1
    目录面试题1:Java 中操作字符串都有哪些类?它们之间有什么区别? 正经回答:深入追问:追问1:这三者在效率上怎么说?追问2:那StringBuffer和StringBuffer线...
    99+
    2024-04-02
  • Java面试题冲刺第五天--基础篇2
    目录面试题1:说一下抽象类和接口有哪些区别?正经回答:深入追问:追问1:说一说你对抽象类的理解吧,他到底是干啥用的追问2:用抽象类实现一个接口,和普通类实现接口会有什么不同么?追问3...
    99+
    2024-04-02
  • Java基础语法之二维数组详解
    目录一、二维数组二、二维数组的声明与初始化2.1 声明2.2 初始化2.2.1 静态初始化2.2.2 动态初始化三、二维数组的遍历四、二维数组的内存图分析五、数组操作的常见异常六、总...
    99+
    2024-04-02
  • java基础二叉搜索树图文详解
    目录概念直接实践准备工作:定义一个树节点的类,和二叉搜索树的类。搜索二叉树的查找功能搜索二叉树的插入操作搜索二叉树 删除节点的操作 - 难点性能分析总程序 - 模拟实现二叉搜索树和 ...
    99+
    2024-04-02
  • Java基础第二篇方法与数据成员
    目录1、调用同一对象的数据成员2、方法的参数列表3、调用同一对象的其他方法4、数据成员初始化5、总结上一篇文章Java基础 从HelloWorld到面向对象 1、调用同一对象的数据成...
    99+
    2024-04-02
  • java基础第23天_数据库连接池\反射
    1.属性赋值-------------1.Man{50+ }Man man = new Man();man.setXxx1(...);man.setXxx2(...);...50Man copy = new...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作