zoukankan      html  css  js  c++  java
  • Java 基础讲解

    Hello,老同学们,又见面啦,新同学们,你们好哦!
    在看完本人的《数据结构与算法》专栏的博文的老同学,恭喜你们在学习本专栏时,你们将会发现好多知识点都讲解过,都易于理解,那么,没看过的同学也不必心急,只需在页面左上角点击本博主的头像,在弹出页面的左边分类专栏那里就能找到《数据结构与算法》专栏啦!!!
    当然,实在着急的同学也可以直接开始JAVA的学习,那么,话不多说,开始我们《JAVA SE》专栏的学习吧!!!

    在讲之前,本人先来说明一下,要想电脑能够 编译 并 运行 我们所编写的*.java文件,我们就必须要先解决环境问题(即:安装JDK和JRE),安装好后,我们就可以学习并自己手动编写并运行JAVA语言啦!

    作为我们JAVA SE的开篇,我们这里首先要来解释一个问题:
    为什么在众多语言中,我们偏偏要挑选JAVA进行学习呢?
    JAVA语言的优点
    1.最为突出 以及 最为重要 的一点就是:JAVA是面向对象的语言。
    那么,什么时面向对象呢?
    面向对象 是指:我们生活中的任何事物,都可以用JAVA语言进行描述。(其实就是制作“工具方法”)
    2.JAVA语言提供了一个非常强大的库,这就保证了我们在编程过程中会极大程度上地 简化 以及 缩短 我们的代码;
    3.JAVA语言提供了“垃圾回收机制”,这就保证了我们在C地学习过程中提到的 “内存泄漏” 现象不会出现,这样看来,相对于C,我们不用再畏首畏尾地去编程了;
    4.JAVA语言具有可移植性(即平台无关性),即:无论是在Windows平台还是在Linux、MacOS等其他平台上对Java程序进行编译,编译后的程序在其他平台上都可以运行(这是因为JAVA语言在编译后,编译器会生成“中间代码”,即*.class文件);
    5.JAVA语言十分安全:JAVA语言提供了“垃圾回收机制”(第三点以提到)、异常处理和安全检查机制(数组边界检测和Bytecode校验等);
    6.相比于C++等语言,没有了头文件、指针、结构、单元、运算符重载、虚拟基础类、多重继承等繁琐的内容,使得我们的代码看起来更加清晰整洁
    7.提供了对Web应用开发的支持,可以用来开发应用

    那么,在了解了JAVA语言的强大之后,我们就来初步介绍下JAVA语言的基本使用方法吧!

    首先,我们要介绍下文件类型:
    我们知道,C语言的文件无非是 *.c 和 .h 文件。
    那么,相对地,JAVA语言的文件是
    .java 和 *.class 文件
    (注意:由于我们上面已经说过了,JAVA中没有头文件,.class文件 是编译器将 .java文件转换为机器能识别的“中间语言”,我们要运行JAVA语言所编译的代码,就要产生相应的.class文件)

    其次,我们先来回顾下我们在初次学习C语言时,我们编写的输出“Hello C!”的程序吧:

    #include <stdio.h>
    
    int main() {
    	printf("Hello C!");
    	
    	return 0;
    }
    

    关于这里的代码,由于我们太过于熟悉,本人就不进行解释了。
    (若是没有学过C语言,本人建议还是先学习了 C语言 和 数据结构与算法 再来学习JAVA的知 识)

    那么,我们现在来编写一下“Hello JAVA!”程序:

    class MyFirstJava {		//这里我们养成一个优良习惯:我们的.java文件的文件名为什么,我们的文件开头就要写成“class 文件名”
    	public static void main(String[] args) {		//这里是主函数的定义,在有些情况下,可以无参数,args可以写成任意变量名
    		System.out.println("Hello, Java!");		//这里就是相当于C中的printf()函数的函数
    	}
    }
    

    那么,我们用命令行编译一下看看结果:
    在这里插入图片描述

    在以上代码中,我们可能会考虑两个问题:
    1.变量类型;
    2.输出函数

    那么我们在下方对这两个问题逐一进行解答:

    1.变量类型:

    八大基本变量类型
    char :1字节补码(UTF-8 和 UTF-16)
    short:2字节补码
    int:4字节补码
    long:8字节补码(C语言的long是4字节补码.由此可以看出JAVA的long和C的long类型不一样)
    float:4字节补码
    double:8字节补码

    (以上六种我们在学习C的过程中已经深入了解过了,我们就不进行过多的讲解了)

    byte :1字节补码(均为 signed类型——即 有符号数,所以我们要注意位运算)
    boolean:我们在《数据结构与算法》专栏中反复提到的布尔型,也就是逻辑型。
    取值为 true 和 false

    说明:在JAVA语言中,没有unsigned 类型修饰符,即:均有正负之分,所以,在这里的 int 类型的变量的范围是:-2147683648 ~ 2147683647
    并且,在JAVA语言中,由于存在boolean类型,所以类似于:1>2>3是错误的,因为:1>2的结果是false,所以,false>3是语法错误。

    String类与自动类型转换
    String类型就是我们C语言中的字符串类型。
    任何数据类型 + String,结果都被自动转换为String类型!
    例:"abc" + 1的结果是 "abc1"
    "bhhbh" + true 的结果是 "abctrue"

    2.输出函数:

    在JAVA语言中,输出函数只有如下三种:
    1.printf:
    和C的printf函数使用方法基本一样

    2.print:
    将它的参数显示在命令窗口,输出后不换行

    3.println:
    将它的参数显示在命令窗口,输出后换行

    (注意:所有的输出函数的使用方法为: System.out.输出函数() )

    那么,在讲解完输出函数后,我们就来编写一下“九九乘法表”程序吧:

    public class NineNine {
    	public static void main(String[] args) {	//args可以写成任何英文字符串,没有硬性要求。也可以不写参数
    		for (int i = 1; i < 10; i++) {
    			for (int j = 1; j <= i; j++) {
    				System.out.printf("%d*%d=%-2d ", i, j, i*j);
    				//String.out.println(j + "*" + i + '=' + i*j + ' ');	
    				//只要有一个String类型,就会全转换为字符串类型
    			}
    			System.out.println();	
    			//在JAVA语言中,println()函数会自动换行!
    		}
    	}
    }
    

    那么,我们用命令行窗口编译运行结果如下:在这里插入图片描述
    好了,输出函数这里我们差不多都已经基本会使用了,那么本人现在来介绍一下函数调用方法
    说到函数调用,这里我们要声明一点:形参和实参的关系与C中一样。

    那么,我们现在来编写一个4层汉诺塔的递归函数来看看如何调用函数吧:

    (汉诺塔问题:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。
    操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
    在这里插入图片描述

    class Hanoii {
    	public static void hanoii(int num, char sourse, char aux, char target) {
    		if(num > 0) {
    			hanoii(num-1, sourse, target, aux);
    			System.out.println(num + ":" + sourse + "-->" + target);
    			hanoii(num-1, aux, sourse, target);
    		}
    	}
    
    	public static void main(String[] args) {
    		hanoii(4, 'A', 'B', 'C');
    	}
    }
    

    那么,我们编译一下,结果如下:
    在这里插入图片描述好了,现在我们再来讲解我们本篇博文的最后一个使用方法—— 类(相当于包含“函数”的 结构体)及其 的调用:
    这里我们用输出点坐标的程序作为模板,代码如下:
    SimplePoint.java:

    class SimplePoint {
    	int row;
    	int col;
    
    	void showPoint() {
    		System.out.println("(" + row + "," + col + ")");
    	}
    }
    

    在如上结构体中,我们发现,和C语言不同的是,结构体中成员还能是函数!

    SimplePointDemo.java:

    class SimplePointDemo {
    	public static void main(String[] arg) {
    		SimplePoint b = new SimplePoint();	//b = (SimplePoint*) malloc(sizof(SimplePoint)); <=> b等同于指针,new的返回值是申请空间的首地址
    		b.row = 10;
    		b.col = 20;
    		b.showPoint();
    	}
    }
    

    我们另一个文件调用上一个文件中的类(可以理解为 包含“函数”的结构体),只需先将这两个.java文件放在同一个目录下,就可以正常运行啦
    那么,我们来运行一下,看看结果:
    在这里插入图片描述
    可能有同学的命令行和本篇博文展示的不一样,本人做一下解释:
    同学们的命令行可能是cmd(默认背景是黑色的)命令行,本人的命令行是Powershell命令行,基本操作是一样的,所以,对于代码的正确无需怀疑(JAVA语言的代码可是移植性最强的哦!!!)。

    那么,我们这篇博文的全部内容就全部结束了,相信好多同学和我一样对于JAVA语言突然产生了极大的兴趣以及疑问,哈哈,可能会有同学觉得“如果不是为了学校课程才不会学习呢!”“竟然有人喜欢学习?”这样的看法。
    总之,不论同学们是出自什么原因而走上JAVA 的求学之路,我们一定要坚持地走下去,关于JAVA的后续博文本人将在闲暇时间写出,希望大家能够喜欢!!!

  • 相关阅读:
    Android
    Android
    Android
    JAVA动态代理基础
    TCP连接与OKHTTP复用连接池
    Android
    Android
    GitHub上README.md教程
    android
    HDU 1097 A hard puzzle
  • 原文地址:https://www.cnblogs.com/codderYouzg/p/12416176.html
Copyright © 2011-2022 走看看