java从入门到精通_Java---开发从入门到精通,分享视频学习教程
主要内容
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---开发从入门到精通,分享视频学习教程相关推荐
- python django项目实例_最新Django项目实战-从零开发NB的任务平台python视频学习教程...
saas导学视频 .mp4 │ 模态框.zip │ ├─day01 │ │ 01 day01 sass项目介绍 .mp4 │ │ 02 day01 sass项目演示 .mp4 │ │ 04 day01 ...
- OpenCV3.2 Java图像处理视频学习教程-贾志刚-专题视频课程
OpenCV3.2 Java图像处理视频学习教程-2434人已学习 课程介绍 OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java Ope ...
- 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 ...
- java gui 读取文件夹_java Swing GUI 入门-文件读写器
java Swing GUI 入门-文件读写器 觉得有用的话,欢迎一起讨论相互学习~ 首先创建一个独立的窗口 public CoupPad(){} public static void main(St ...
- python全栈开发实践入门_Python全栈开发实践入门
Python全栈开发实践入门 编辑 锁定 讨论 上传视频 <Python全栈开发实践入门>是2017年10月电子工业出版社出版的图书,作者是谢瑛俊. 书 名 Python全栈开发实践入门 ...
- 音视频开发之旅(32)-音视频学习资料
目录 为什么要学习音视频? 如何学习系统性音视频? 音视频相关的资料 学习实践的输出文章分类聚合 收获 最近有朋友问想学习音视频,应该怎么学,有什么资料吗? 这个问题也困扰我很久,几年前就想开始音视频 ...
- HTML视频学习教程,让你实战入门前端
html是制作网页的基础.我们在网站建设中谈论的静态网页是基于HTML的网页.早期的网页直接用HTML代码编写,但现在有许多智能网页制作软件(常用的如frontpage,dream weaver等)通 ...
- java iterator如何知道数量_Java开发岗面试题基础篇(二)
点击蓝字 关注wo们 老哥们,接上篇<Java开发岗面试题--基础篇(一)>,本期推出Java开发岗面试题--基础篇(二),来看看Java中的集合.多线程.异常体系等知识在面试中是怎么体现 ...
- java刚工作搭建环境_Java开发环境的搭建
一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK 点击下载好的exe文件安装即可. 2.接下来我们需要配置环境变量 xp系统下 右键'我的电脑' ...
最新文章
- Ruby开发环境配置
- Ajax实例(一)$.ajax的应用
- 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(jQuery1)
- h5 先加载小图_【3dmax】小图渲大图(光子贴图的调用)
- iPad如何越狱?4.2.1完美越狱教程 一 (DFU 绿霸越狱)
- 是否使用有硼砂的眼用品
- ASP.NET MVC 上传图片到项目目录中的文件夹并显示
- Keil uVision4 for ARM 下增加支持C51,C5x
- 中国软件离制造业还是太远
- Learn Python the hard way, ex40 字典,可爱的字典
- Cubase Elements v11.0.0 WiN 23GB含音色库 中文完整版编曲录音软件
- MDUI中Select初始化问题
- Redis(九)-Redis的常用数据类型之Hash表
- postgresql中case when的使用
- 零基础搭建完全免费个人静态博客
- c语言 一元多项式展开括号,一元多项式Polynomial的C语言实现
- 这几招教你如何增加食物中铁的吸收
- C#开发之——MonthCalendar(12.18)
- 【深度学习】计算机视觉(七)——使用GPU进行目标检测详解(上)
- 两条边延长角会有什么变化_《直线、射线、线段和角》教学设计
热门文章
- 干货素材|UI设计师需要了解的APP弹窗模板
- eval语法报错 ie10_JavaScript中eval语句浅尝
- TCP协议的三次握手及释放
- C++ 四种智能指针详解
- cuSPARSE库:(十一)cusparseCreateSolveAnalysisInfo()
- Linux内存管理:memblock(引导期间管理内存区域)
- 算法笔记:简单的字符串模式匹配-BF算法
- java final date_Java中的时间和日期(上)
- python3.5安装教程linux_Linux下安装python3.6和第三方库的教程详解
- 傅里叶变换@(stft和istft)