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的后续博文本人将在闲暇时间写出,希望大家能够喜欢!!!

Java 基础讲解的更多相关文章

  1. java基础讲解08-----类和对象

    1.什么是面向对象? 面向对象设计的实质 就是对现实世界的对象进行建模操作. 现实的生活中,随处可见的一种事物就是对象,对象是事物存在的实体,通常我们将会对对象划分为两个部分,静态部分和动态部分.比如 ...

  2. java基础讲解06-----字符串

    1. package test; public class chb01 { public static void main(String[] ggs)        {            /**  ...

  3. java基础讲解14-----IO

    package com.io; import java.io.File;import java.io.IOException; public class IoClass {        /**   ...

  4. java基础讲解13-----集合

    一:集合介绍 import java.util.ArrayList;import java.util.Collection;import java.util.Iterator; public clas ...

  5. java基础讲解12-----Swing

    package com.swing; import java.awt.*; import javax.swing.*; public class Swing01  extends JFrame{ /* ...

  6. java基础讲解11-----java中的异常

    1.java利用 try catch语句块捕获异常   2.finally语句  表示总是执行,不管程序是否异常 注意:1.在finally语句块异常  2.在前面的代码中使用Sysrtem.exit ...

  7. java基础讲解10-----类的高级特性

    一.final关键字 1.final关键字修饰变量,表示变量不可以被改变,如果想修改,编译器不会接受的. 注意:final关键字定义的变量必须赋值 public  static final 修饰  白 ...

  8. java基础讲解09-----接口,继承,多态

    还有什么包装类,数字类,这些简单的我就不想过去介绍,前面也大概的介绍了下,继承,多态 1.类的继承 继承的思想:基于某个父类的扩展,制定一个新的子类.子类可以继承父类原有的属性,方法,也可以重写父类的 ...

  9. java基础讲解07-----数组

    1.什么是数组 2.怎么使用数组 package test; public class ShuZu {            public static void main(String[] args ...

随机推荐

  1. 微信小程序分享转发用法大全——自定义分享、全局分享、组合分享

    官方提供的自定义分享 使用隐式页面配置函数实现的全局分享-推荐 使用隐式路由实现的全局分享-不推荐,仅供了解隐式路由 前言: 目前微信小程序只开放了页面自定义分享的API,为了能够更灵活的进行分享配置 ...

  2. coding++:idea提交SVN或GIT时,忽略某些文件

    设置步骤:Settings→Editor→File Types在窗口最下方“Ignore files and folders”一栏中添加如下忽略: *.iml;*.idea;*.gitignore;* ...

  3. js的预编译

    JavaScript不会完全按照代码的顺序执行,在执行之前会对定义的函数和变量先来一边所谓的预编译处理. 先来说下对变量的预处理: console.log(a) //undefined var a = ...

  4. 下拉框select->option中如何把参数传到视图函数中去

    例子: <select name="p_id" id=""> {% for p in permissions %} <option value ...

  5. 如何测试Linux命令运行时间?

    良许在工作中,写过一个 Shell 脚本,这个脚本可以从 4 个 NTP 服务器轮流获取时间,然后将最可靠的时间设置为系统时间. 因为我们对于时间的要求比较高,需要在短时间内就获取到正确的时间.所以我 ...

  6. [vijos1782]借教室<线段树>

      题目链接:https://vijos.org/p/1782 题意:一个区间1,n.m次操作,每次操作让l,r区间值减去d,当有任何一个值小于0就输出当前是第几个操作 这道题其实是没有什么难度的,是 ...

  7. 403 Invalid CORS request 跨域问题解决

    这里使用springMVC自带的CORS解决跨域问题 什么是跨域问题 1.请求地址与当前地址不相同 2.端口号不相同 技术有限端口号不同还未发现 3.二级域名不相同 出现这种问题如何解决有很多种方法, ...

  8. nginx代理图片上传以及访问

    nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller @Post ...

  9. 使用python-crontab给linxu设置定时任务

    安装pip install python-crontab #coding=utf-8 from crontab import CronTab #创建类 class Crontabi(object): ...

  10. Girls' research(马拉车算法) hdu 3294

    文章目录 思路如下 Manachar代码注释 题解如下 Problem Description One day, sailormoon girls are so delighted that they ...