主要内容

Java中的方法

递归算法

接收键盘中的输入

面向对象的本质

我的第一个类:Student

垃圾回收机制

构造方法

方法的重载

static声明的静态属性和静态方法

this关键字的使用

笔记详解

1. Java中的方法

我们在Java中可以将完成某一个功能的若干行代码组织起来,然后给这些组织起来的代码起一个名字,这样以后想要使用这些代码,直接通过这个名字来调用即可。这就是Java中的方法,在其他语言中也成为函数。

要注意的是,Java中的方法只支持值传递,不支持引用传递。方法定义的实例如下:

public class TestMethod {

// 定义一个方法,该方法没有返回值,所以使用void

public static void showName() {System.out.println("我的名字是Tom");}// 定义一个方法,该方法的返回值类型是int,所以使用intpublic static int add(int a, int b) {int sum = a + b;return sum;}public static void main(String[] args) {// 调用之前定义的方法showName();int sum = add(3, 5);System.out.println("最终的计算结果是: " + sum);}}

2. 递归算法

递归算法是Java中常见且使用的一类算法,它的主要思路是一个方法通过不断调用自身,来将问题简单化。我们在写递归算法的时候,主要考虑到两方面:递归体和递归出口。

一个递归算法必须要有递归出口,否则该方法会不断调用自身,出现死循环,最终导致栈溢出。所以在递归算法中要定义一个递归出口,告诉程序什么时候不再调用该方法。

递归体是递归算法的主要内容,一个方法不断地调用自身,就是通过递归体来将问题简单化,从而一步步解决问题。

下面给出一个实例:使用递归算法计算阶乘

public static int factorial(int a) {if (a > 1) { // 调用递归return a * factorial(a - 1);} else { // 递归出口,不再调用递归return 1;}}

3. 接收键盘中的输入

在Java中接收键盘输入的内容,首先要通过 import java.util.Scanner; 引入 util 包中的 Scanner 类,然后通过这个类来获取键盘输入的内容。下面给出两个实例:

实例一:接收键盘输入的字符串,并打印出来

public static void inputString() {Scanner s = new Scanner(System.in);System.out.print("请输入一个字符串:");String str = s.next();System.out.println(str);s.close();}

实例二:接收键盘中输入的整数,进行计算并输出

public static void add() {Scanner num = new Scanner(System.in);System.out.print("请输入一个整数:");int a = num.nextInt();System.out.print("请输入另外一个整数:");int b = num.nextInt();System.out.println("计算结果为:" + (a + b));num.close();}

4. 面向对象的本质

以类的方式组织代码,以对象的方式封装数据

5. 我的第一个类:Student

正式接触面向对象编程,我的第一个类是很普通的Student类,类中包括自己的属性和方法,然后通过这个类去定义学生对象。

public class Student {// 类的静态属性String name;int age;String gender;int height;// 类的方法public void study() {System.out.println(name + "正在学习Java!");}public void sayHello(String userName) {System.out.println(name + "向" + userName + "说:你好");}// 程序的主入口,虽然写在Student类中,但是在逻辑上和Student类没有联系public static void main(String[] args) {Student Tom = new Student();Student Jane = new Student();Tom.name = "Tom";Jane.name = "Jane";Tom.study();Jane.sayHello("Jack");}}

6. 垃圾回收机制

Java中存在垃圾回收机制,是用来对不再使用的对象进行清理,避免带来的内存占用问题。Java中的垃圾回收机制和C++中的有所不同。在C++中,垃圾回收机制是程序员来手动完成的,也就是说程序员需要手动删除对象,清理垃圾。但是Java中的垃圾回收机制是jdk进行自动完成的,不需要程序员手动清理。虽然这回有一定的系统开销,但是却可以避免人工清理的错误。

7. 构造方法

Java中的构造方法是用来初始化类的实例的,构造方法有以下特点:

构造方法是通过 new 语句来完成的

构造方法返回的是类的实例对象,准确的说是这个实例对象的地址。也就是说构造方法是有返回值的,但是在定义构造方法的时候,我们不能使用int等进行设置返回值的类型,同时在构造方法内部也不能有return语句。

构造方法的名字和类的名字必须完全一直

如果我们有定义构造方法,那么会调用此方法来初始化实例对象,如果我们没有定义构造方法,那么系统会自动定义一个没有参数的默认构造方法。

下面展示一个构造方法的实例:

public class Point {double x, y, z;// 构造方法public Point(double _x, double _y, double _z) {x = _x;y = _y;z = _z;}}

8. 方法的重载

方法的重载是指在一个类中,可以定义多个相同名字的方法,但是这些方法需要满足以下三个条件中的一个或多个:参数个数不同,参数类型不用,实参顺序不同。在调用此方法时,就可以通过传入的参数就可以决定调用哪一个具体的方法。除了 普通函数以外,构造函数也是可以重构的,实例如下:

public class TestOverLoad {public double add(int a, int b) {return a + b;}public double add(int a, int b, int c) {return a + b + b;}public double add(double a, int b) {return a + b;}public static void main(String[] args) {TestOverLoad test = new TestOverLoad();// 通过传入的参数不同,来决定调用哪一个具体的方法System.out.println(test.add(10, 20));System.out.println(test.add(3.5, 20));System.out.println(test.add(3, 20, 15));}}

9. static声明的静态变量和静态方法

在Java中,使用static关键字修饰声明的变量和方法叫做静态变量和静态方法。静态变量也可以叫做静态属性或类属性。

静态变量和静态方法是属于类的,是该类的公有属性,而不是某一个实例的属性。即使在程序中没有实名该类的实例,也是可以通过 类名.静态变量名 和 类名.静态方法名 来调用静态变量和静态方法。

在静态方法中只能使用静态属性,不能使用非静态属性。具体实例如下:

public class TestStatic {static int mark = 666; // 静态属性public static void showMark() { // 静态方法System.out.println(mark);}public static void main(String[] args) {System.out.println(TestStatic.mark);// 通过类名直接调用静态属性TestStatic.showMark();// 通过类名直接调用静态方法TestStatic test = new TestStatic();System.out.println(test.mark);// 通过类的实例来调用静态属性test.showMark();// 通过类的实例调用静态方法}}

10. this关键字的使用

在普通方法中,this指向的是正在调用此方法的实例对象;在构造函数中,this指向的是正在初始化的实例对象。要注意的是,不能使用this来调用静态属性和静态方法,因为这二者是从属于类的,而不是从属于实例对象的。

除此之外,我们还可以使用 this() 来调用类中的构造函数,实例如下:

public class TestThis {

int mark;

String name;

public TestThis(int mark, String name) {

this(); // 通过this()调用其他的构造方法

this.mark = mark;

this.name = name;

}

public TestThis() {

this.mark = 0;

this.name = "初始化";

}

}

今天的学习就先到这里,小编在最后为大家分享适合Java小白和刚开始学习的新手同学的视频教程+学习路线!关注、转发、私信回复:“学习”即可领取!

java从入门到精通_Java---开发从入门到精通,分享视频学习教程相关推荐

  1. python django项目实例_最新Django项目实战-从零开发NB的任务平台python视频学习教程...

    saas导学视频 .mp4 │ 模态框.zip │ ├─day01 │ │ 01 day01 sass项目介绍 .mp4 │ │ 02 day01 sass项目演示 .mp4 │ │ 04 day01 ...

  2. OpenCV3.2 Java图像处理视频学习教程-贾志刚-专题视频课程

    OpenCV3.2 Java图像处理视频学习教程-2434人已学习 课程介绍         OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java Ope ...

  3. java jdk 1.8 配置_Java开发环境jdk 1.8安装配置方法(Win7 64位系统/windows server 2008)...

    什么是jdk jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的工具包.也可以说jdk是java的sdk. 目前的JDK大致分三个大版本: Java S ...

  4. java gui 读取文件夹_java Swing GUI 入门-文件读写器

    java Swing GUI 入门-文件读写器 觉得有用的话,欢迎一起讨论相互学习~ 首先创建一个独立的窗口 public CoupPad(){} public static void main(St ...

  5. python全栈开发实践入门_Python全栈开发实践入门

    Python全栈开发实践入门 编辑 锁定 讨论 上传视频 <Python全栈开发实践入门>是2017年10月电子工业出版社出版的图书,作者是谢瑛俊. 书 名 Python全栈开发实践入门 ...

  6. 音视频开发之旅(32)-音视频学习资料

    目录 为什么要学习音视频? 如何学习系统性音视频? 音视频相关的资料 学习实践的输出文章分类聚合 收获 最近有朋友问想学习音视频,应该怎么学,有什么资料吗? 这个问题也困扰我很久,几年前就想开始音视频 ...

  7. HTML视频学习教程,让你实战入门前端

    html是制作网页的基础.我们在网站建设中谈论的静态网页是基于HTML的网页.早期的网页直接用HTML代码编写,但现在有许多智能网页制作软件(常用的如frontpage,dream weaver等)通 ...

  8. java iterator如何知道数量_Java开发岗面试题基础篇(二)

    点击蓝字 关注wo们 老哥们,接上篇<Java开发岗面试题--基础篇(一)>,本期推出Java开发岗面试题--基础篇(二),来看看Java中的集合.多线程.异常体系等知识在面试中是怎么体现 ...

  9. java刚工作搭建环境_Java开发环境的搭建

    一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK 点击下载好的exe文件安装即可. 2.接下来我们需要配置环境变量 xp系统下  右键'我的电脑' ...

最新文章

  1. Ruby开发环境配置
  2. Ajax实例(一)$.ajax的应用
  3. 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(jQuery1)
  4. h5 先加载小图_【3dmax】小图渲大图(光子贴图的调用)
  5. iPad如何越狱?4.2.1完美越狱教程 一 (DFU 绿霸越狱)
  6. 是否使用有硼砂的眼用品
  7. ASP.NET MVC 上传图片到项目目录中的文件夹并显示
  8. Keil uVision4 for ARM 下增加支持C51,C5x
  9. 中国软件离制造业还是太远
  10. Learn Python the hard way, ex40 字典,可爱的字典
  11. Cubase Elements v11.0.0 WiN 23GB含音色库 中文完整版编曲录音软件
  12. MDUI中Select初始化问题
  13. Redis(九)-Redis的常用数据类型之Hash表
  14. postgresql中case when的使用
  15. 零基础搭建完全免费个人静态博客
  16. c语言 一元多项式展开括号,一元多项式Polynomial的C语言实现
  17. 这几招教你如何增加食物中铁的吸收
  18. C#开发之——MonthCalendar(12.18)
  19. 【深度学习】计算机视觉(七)——使用GPU进行目标检测详解(上)
  20. 两条边延长角会有什么变化_《直线、射线、线段和角》教学设计

热门文章

  1. 干货素材|UI设计师需要了解的APP弹窗模板
  2. eval语法报错 ie10_JavaScript中eval语句浅尝
  3. TCP协议的三次握手及释放
  4. C++ 四种智能指针详解
  5. cuSPARSE库:(十一)cusparseCreateSolveAnalysisInfo()
  6. Linux内存管理:memblock(引导期间管理内存区域)
  7. 算法笔记:简单的字符串模式匹配-BF算法
  8. java final date_Java中的时间和日期(上)
  9. python3.5安装教程linux_Linux下安装python3.6和第三方库的教程详解
  10. 傅里叶变换@(stft和istft)