网站首页 > java教程 正文
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);
}
}
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;
}
}
在方法重载的时候有一个重要的原则就是 要求方法的返回值类型一定要相同。
通过用System.out.println()输出发现所有的类型都可以进行输出,由此我们可以发现这个方法是一个重载的方法。
3、方法的递归调用
方法的递归调用指的是一个方法调用自己的形式。如果要进行方法的递归操作往往都具备以下特点
- 方法必须有一个递归的结束条件
- 方法在每次递归处理的时候一定要做出一些变更
计算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();
}
}
引用数据类型最大的特征在于内存的分配操作,只要出现关键字new那么只有一个解释:开辟新的内存(内存是不可能无限开辟的,所以这个时候所谓的性能调优调整的就是内存问题)。
内存分析
我们使用的内存空间分为两块:堆内存空间(保存真正的数据,保存对象的属性信息)和栈内存空间(保存的堆内存的地址,堆内存操作权,简单理解叫保存对象的名称),所有数据类型必须在开辟空间后才能使用。如果使用了未开辟的数据类型则会出现NullPointerException,只有引用数据类型(数组、类、接口)才会产生此类异常,以后出现了根据错误位置观察其是否进行实例化对象。
引用传递
引用传递的本质就在于别名,而这个别名只不过是放在我们栈内存当中,一块堆内存可以被多个栈内存所指向。
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();
}
}
其实我们在使用while的循环操作大部分都可以使用递归,而使用递归是因为主要一个方法可以执行的操作很多,而且结构简单、好。面向对象的前身是面向过程此时的方法不再由主类进行调用,而是要通过对象进行调用。
- 上一篇: Java基础知识(java基础知识点)
- 下一篇: Java基础知识有哪些 怎么不断提高专业技能
猜你喜欢
- 2024-10-05 java基础知识精华总结(一)(java基础知识点大全)
- 2024-10-05 Java核心基础知识汇总,初级程序员必备,面试必考!
- 2024-10-05 Java基础知识(一些需要注意的点)(java需要注意什么)
- 2024-10-05 想要学好Java,首先需要了解Java编程语言基础知识中的这四点
- 2024-10-05 Java 4 大核心基础知识,初学者必备
- 2024-10-05 「Java后端总结」Java基础(1)——Java基础知识
- 2024-10-05 java4大核心基础知识,初学者必备
- 2024-10-05 Java核心基础知识总结(java核心知识pdf)
- 2024-10-05 Java语言基础知识整理汇总(java语言基础知识整理汇总怎么写)
- 2024-10-05 Java初学者必备4大核心基础知识(java的基础知识)
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)