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的后续博文本人将在闲暇时间写出,希望大家能够喜欢!!!
Java 基础讲解的更多相关文章
- java基础讲解08-----类和对象
1.什么是面向对象? 面向对象设计的实质 就是对现实世界的对象进行建模操作. 现实的生活中,随处可见的一种事物就是对象,对象是事物存在的实体,通常我们将会对对象划分为两个部分,静态部分和动态部分.比如 ...
- java基础讲解06-----字符串
1. package test; public class chb01 { public static void main(String[] ggs) { /** ...
- java基础讲解14-----IO
package com.io; import java.io.File;import java.io.IOException; public class IoClass { /** ...
- java基础讲解13-----集合
一:集合介绍 import java.util.ArrayList;import java.util.Collection;import java.util.Iterator; public clas ...
- java基础讲解12-----Swing
package com.swing; import java.awt.*; import javax.swing.*; public class Swing01 extends JFrame{ /* ...
- java基础讲解11-----java中的异常
1.java利用 try catch语句块捕获异常 2.finally语句 表示总是执行,不管程序是否异常 注意:1.在finally语句块异常 2.在前面的代码中使用Sysrtem.exit ...
- java基础讲解10-----类的高级特性
一.final关键字 1.final关键字修饰变量,表示变量不可以被改变,如果想修改,编译器不会接受的. 注意:final关键字定义的变量必须赋值 public static final 修饰 白 ...
- java基础讲解09-----接口,继承,多态
还有什么包装类,数字类,这些简单的我就不想过去介绍,前面也大概的介绍了下,继承,多态 1.类的继承 继承的思想:基于某个父类的扩展,制定一个新的子类.子类可以继承父类原有的属性,方法,也可以重写父类的 ...
- java基础讲解07-----数组
1.什么是数组 2.怎么使用数组 package test; public class ShuZu { public static void main(String[] args ...
随机推荐
- VScode+phpStudy搭建php代码调试环境
一.安装Visual Studio Code 官网:https://code.visualstudio.com/ 下载安装包后,按照默认安装即可 安装中文语言环境 点击左侧工具栏的 extension ...
- 北邮OJ103.反转单词 c++/java
103. 反转单词 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出一句英文句子(只由大小写字母和空格组成,不含标点符号,也不会出现连续的空格),请将其中的所有单词顺序翻转 输入格 ...
- TensorFlow v2.0实现逻辑斯谛回归
使用TensorFlow v2.0实现逻辑斯谛回归 此示例使用简单方法来更好地理解训练过程背后的所有机制 MNIST数据集概览 此示例使用MNIST手写数字.该数据集包含60,000个用于训练的样本和 ...
- 将java中Map对象转为有相同属性的类对象(json作为中间转换)
java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...
- java 初学者 第一阶段作业编程总结及心得体会
0.前言 第一阶段java作业分为3次. 第一次作业是简单得一些语法和一些简单得逻辑思维,主要内容有求三角形是什么三角形的,还有就是求坐标点所在范围的,也涉及到了数字和字母的转换,总之相相当于是给ja ...
- ArcSDE数据库、文件地理数据库和个人地理数据库的区别
Geodatabase地理数据库分为: Personal Geodastabase个人地理数据库, File Geodatabase文件地理数据库, ArcSDE Geodatabase SDE地理数 ...
- __str_方法和__repr__的区别
__str__方法和__repr__方法: 官方文档解释: Object.__repr__(self): 由 repr() 内置函数调用以输出一个对象的“官方”字符串表示.如果可能,这应类似一个有效的 ...
- 牛客挑战赛38 (A - D)
A - 多边形与圆 题目链接 题意 给出一个多边形的坐标和圆的半径, 多边形可以在圆内滚动, 问点 1 在成为转动中心到下一次成为转动中心的过程中经过的路程长度. 题解 枚举点 2 - n 成为转动中 ...
- jQuery学习笔记01
1.jQuery介绍 1.1什么是jQuery ? jQuery,顾名思义,也就是JavaScript和查询(Query),它就是辅助JavaScript开发的js类库. 1.2 jQuery核心思想 ...
- CentOS-7.6 下搭建 NIS 服务器
##服务端配置: ####Server: 192.168.0.178(CentOS 7.6) # systemctl stop firewalld # systemctl disable firewa ...