走进Java以及数据类型与运算符

走进Java

Java语言的历史

Java是哪家公司的产品?

Java是美国Sun(Stanford University Network,斯坦福大学网络公司)公司在1995年推出的一门计算机高级编程语言。但是在2009年是Sun公司被Oracle(甲骨文)公司给收购了,所以目前Java语言是Oracle公司所有产品。

Java名称的来历?

早期这门语言的名字其实不叫Java,当时称为Oak(橡树的意思),为什么叫橡树呢?原因是因为Sun公司的门口种了很多橡树,但是后来由于商标注册时,Oak商标已经其他公司注册了,所以后面改名为Java了。那么有人好奇为什么叫Java呢?Java是印度的一个岛屿,上面盛产咖啡,可能是因为他们公司的程序员喜欢喝咖啡,所以就改名为Java了。

Java的创始人是谁?

说完Java名称的来历之后,接下来我们聊聊Java的祖师爷是谁? Java的联合创始人有很多,但是行业普遍认可的Java的创始人 是詹姆斯▪高斯林,被称为Java之父。

Java能做什么

其Java能做的事情非常多,它可以做桌面应用的开发、企业互联网应用开发、移动应用开发、服务器系统开发、大数据开发、游戏开发等等。

1.桌面应用开发:能够在电脑桌面运行的软件
举例:财务管理软件、编写程序用的IDEA开发工具等,可以用Java语言开发
    
2.企业级应用开发:大型的互联网应用程序
举例:淘宝、京东等
    
3.移动应用开发:运行的Android手机端的软件
举例:QQ客户端、抖音APP4.服务器系统:应用程序的后台(为客户端程序提供数据)
举例:服务器系统为用户推荐那你喜爱的视频
    
5.大数据开发:大数据是一个互联网开发方向
    
6.游戏开发:游戏本质上是给用户提供娱乐的软件,有良好的交互感受
举例:我的世界MineCraft就是用Java语言开发的

虽然Java能做的事情非常多,但并不是每一个方向都被市场认可(比如桌面应用使用Java语言开发就不太方便,而使用C#语言是比较推荐的)。目前Java的主流开发方向是使用Java开发企业级互联网应用程序(很多公司的OA系统,客户关系管理系统,包括传智播客使用教学实施管理系统都是用Java语言开发的)。

Java的技术体系

所谓技术体系,就是Java为了满足不同的应用场景提供了不同的技术版本,主要有三个版本。

  • Java SE(Java Standard Edition):叫做标准版,它是后面两个版本的基础,也就是学习后面两个版本必须先学习JavaSE。我们现阶段学习的就是这个版本中的技术。
  • Java EE(Java Enterprise Edition): 叫做企业版,它是为企业级应用开发提供的一套解决方案。在后面的课程中主要学习这个版本中的技术。
  • Java ME(Java Micro Edition):叫做小型版,它为开发移动设备的应用提供了一套解决方案。目 前 已 经 不 被 市 场 认 可 ( 淘 汰 ) , 取 而 代 之 的 是 基 于Android系统的应用开发。

Java入门

JDK下载和安装

JDK下载

这是JDK下载的官方网址 https://www.oracle.com/java/technologies/downloads/#jdk17-windows ,

image-20230801210750923

image-20230801210828206

解压到如下目录中

image-20230801211006008

验证是否安装成功

第一步:在JDK的bin目录,地址栏输入cmd,回车

image-20230801211115888

第二步:在命令行窗口中输入 java -version 回车

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UoZlHFg8-1691317217476)(C:/Users/hw/AppData/Roaming/Typora/typora-user-images/image-20230801211206236.png)]

做完以上步骤之后,你的电脑上就已经有Java的开发环境了,接下来可以开发Java程序了。

cmd常用命令

前面测试JDK是否安装成功,需要在黑窗口中输入javac -version java -version 这其实就是JDK查看编译工具和运行工具版本号的命令。这种输入命令的和电脑交互的方式,称之为命令行交互。也就是说,可以使用命令指挥电脑做事情。了解几种Windows系统常见的命令,后面可能会用到。下面是Windows系统常见的命令以及作用,小伙伴们可以自己试一试。需要注意的是,每敲完一条命令之后,马上敲回车就表示执行这条命名。

E:            //切换到E盘
cd [目录] 	//进入指定的目录
cd .. 		 //退回到上一级目录
cd /		 //退回到根目录
dir			 //显示当前目录下所有的内容
cls			 //清空屏幕

Java程序中常见的问题

  • Windows的文件扩展名没有勾选

  • 代码写了,但是忘记保存了

  • 文件名和类名不一致。

  • 英文大小写错误,单词拼写错误,存在中文符号,找不到main方法。

  • 括号不配对。

  • 编译或执行工具使用不当

    文件扩展名没有打开

下图中文件扩展名的勾勾没有勾选,就会导致你创建的文件是普通的文本文件(.txt)文件,而不是java文件。

正确做法是把文件扩展名的勾选上

文件名和类名不一致

文件名是HelloWorld,但是类名是 Helloworld 看出区别了吗?一个是大写的W,一个是小写的w。 不仔细看还真看不出来。

正确写法是文件名叫 HelloWorld ,类名也叫 HelloWorld

单词大小写错误

图中不是stringsystem这两个单词都写错了, 这里是严格区分大小写的

正确写法是**StringSystem**

主方法写错了

主方法的名称写成了 mian ,这是错误的。

主方法正确写法:必须是 public static void main(String[] args){} ,一个字母都不能错。

标点符号写错了

打印语句最后的分号,写成功中文分号

正确写法应该是英文分号;不仔细看还真看不出区别,要小心

JDK的组成

image-20230801212656621

JDK中每一个部分是用来干什么的

- 什么是JVM?
答:JDK最核心的组成部分是JVMJava Virtual Machine),它是Java虚拟机,真正运行Java程序的地方。
    
- 什么是核心类库?
答:它是Java本身写好的一些程序,给程序员调用的。 Java程序员并不是凭空开始写代码,是要基于核心类库提供的一些基础代码,进行编程。
    
- 什么是JRE?
答:JREJava Runtime Enviroment),意思是Java的运行环境;它是由JVM和核心类库组成的;如果你不是开发人员,只需要在电脑上安装JRE就可以运行Java程序。
    
- 什么是开发工具呢?
答:Java程序员写好源代码之后,需要编译成字节码,这里会提供一个编译工具叫做javac.exe,编写好源代码之后,想要把class文件加载到内存中运行,这里需要用到运行工具java.exe。
除了编译工具和运行工具,还有一些其他的反编译工具、文档工具等待...

JDKJRE的关系用一句话总结就是:用JDK开发程序,交给JRE运行

JDK环境变量配置

JDK安装后,接下我们来学习一个补充知识,叫做Path环境变量

  • 什么是**Path**环境变量?

​ Path环境变量是让系统程序的路径,方便程序员在命令行窗口的任意目录下启动程序;

  • 为什么要配置环境变量呢?

  • 将**JDK配置到Path**路径下

JDKbin目录配置到Path环境变量下,这样就可以在任意目录下启动javacjava命令来完成编译和运行了。

第一步:找到JDKbin目录D:\Enviroments\jdk-17.0.32,复制一下

第二步:将JDKbin目录粘贴在Path环境变量后面

第三步:检测否配置成功

1.按住Win+R输入cmd 回车,打开命令行创建
2.输入javac -version 看提示信息是否显示你安装JDK的版本号
输入java -version 看提示信息是否显示你安装JDK的版本号
【如果显示版本号都是JDK17就表示配置安装成功】

JDK环境变量已经配置好了,后面使用JDK命令可以在任意目录下运行。

方法一: 直接配置到bin目录

方法二:配置一个 JAVA_HOME ,然后再配置

javadoc 命令的使用

文档注释(Documentation Comments)是一种特殊的注释格式,用于为Java程序中的类、方法、字段等元素提供文档说明。文档注释以/**开始,以 */ 结束,可以包含多行描述性文本和标记。文档注释是一种标准的注释格式,在使用工具生成 API 文档时可以被提取出来,用于生成详细的程序文档。它们提供了对代码的解释、使用示例、参数说明、返回值说明等重要信息,帮助其他开发者理解和使用代码。

Javadoc是由SUN公司提供的一种工具,它可以从程序源代码中提取类、方法、成员等的注释,并生成与源代码配套的API帮助文档。换句话说,只需在编写程序时使用特定的标签注释,在程序编写完成后,通过javadoc就可以生成程序的API帮助文档。javadoc能够识别文档注释中的一些特殊标签,这些标签通常以@符号开头,后跟一个特定的名称,有些标签也以{@符号开头,以}符号结束。

image-20230801213740642

jlink命令

众所周知,在JDK 8之后,默认不再提供单独的JRE。如果在项目中仍希望以JRE的形式发布软件,可以使用jlink命令生成自定义的JREjlink命令的格式如下:

jlink [options] --module-path modulepath --add-modules [,module...]--output outputpath
    
/*参数解析:
(1) modulepath:路径
(2) module:模块名称
(3) outputpath:输出路径
*/

  //  例如,可以在JDK目录下执行以下命令来使用jlink命令生成JRE:
    jlink --module-path jmods --add-modules java.base,java.desktop --output jre
   /*
   该命令将会添加指定的模块,并生成一个包含这些模块的JRE。生成后,使用 jre\bin\java --list-modules 来查看JRE中添加的模块。
   */

Java的跨平台原理

学完JDK的组成后,我们知道Java程序的执行是依赖于Java虚拟机的。就是因为有了Java虚拟机所以Java程序有一个重要的特性叫做跨平台性。

  • 什么是跨平台运行呢?

所谓跨平台指的是用Java语言开发的程序可以在多种操作系统上运行,常见的操作系统有Windows、Linux、MacOS系统。

如果没有跨平台性,同一个应用程序,想要在多种操作系统上运行,需要针对各个操作系统单独开发应用。比如微信有Windows版本、MacOS版本、Android版本、IOS版本

  • 为什么Java程序可以跨平台呢?

跨平台性的原理是因为在不同版本的操作系统中安装有不同版本的Java虚拟机,Java程序的运行只依赖于Java虚拟机,和操作系统并没有直接关系。从而做到一处编译,处处运行

image-20230801214247040

Java反编译

Java程序部署时,只需提供.class字节码文件即可运行,无需提供.java源文件。.class字节码文件无法直接打开查看,如果想学习某个只有.class字节码文件的Java程序,可以使用反编译工具将.class字节码文件反编译为.java源文件,从而可以查看源代码进行学习。

将源文件(.java)转换为字节码文件(.class)的过程称为编译,将字节码文件(.class)转换回源文件(.java)的过程称为反编译。常用的反编译工具包括JDFrontEnd Plus等。下面介绍jd-gui-0.3.4反编译工具的使用方法。下载该软件并解压缩,双击“jd-gui.exe”图标运行程序,启动JD反编译工具

Java的基本用法

注释

1.单行注释:
// 后面根解释文字
2.多行注释
/*
这里写注释文字
可以写多行
*/
3.文档注释
/**
这里写文档注释
也可以写多行,文档注释可以利用JDK的工具生成帮助文档
**/
    
Ctrl + / 单行注释(对当前行进行注释)
Ctrl + Shift + / 对选中的代码进行多行注释。

字面量

public class Demo{
public static void main(String[] args){
//1.整数
System.out.println(666);
//2.小数
System.out.println(3.66);
//3.字符: 字符必须用单引号引起来
System.out.println('a');
System.out.println('0');
System.out.println('中');
System.out.println(' '); //空格也算字符
// 特殊字符:\t表示制表符 \n表示换行
System.out.println('\t'); //这相当于一个tab键,专业叫做制表符
System.out.println('\n'); //这是换行的意思
//4.字符串:字符串是双引号引起来的
System.out.println("我爱你中国abc00.@#$%");
//5.布尔值:只有两个值true和false
System.out.println(true);
System.out.println(false);
}
}

变量

  • 变量是用来记录程序中的数据的,可以把变量理解成内存中的小盒子,盒子里放的东西就是变量记录的数据
  • 变量的定义格式: 数据类型 变量名 = 初始值;
  • 变量记录的数据程序运行过程中是可以发生改变的: 变量名 = 值;

标识符

Java中,标识符用来为程序中的常量、变量、方法、类、接口和包命名。标识符的命名需要遵循一定的规则,包括以下四个规则:

(1)标识符由字母( A~Z 和 a~z )、数字(0~9)、下划线(_)、美元符号($)以及部分Unicode字符集(各符号之间没有空格)组成。

(2)标识符的首字母以字母、下划线或美元符号开头,后面可以是任何字母、数字、美元符号或下划线,但不能以数字开头。

(3)标识符的命名不能是关键字、布尔值(true、false)和null

(4)标识符区分大小写,没有长度限制

关键字

image-20230801215254418

注意:

(1)“const”“goto”java的保留字,但目前未被使用,因此在实际编码中不能使用它们作为标识符。

(2)“true”“false”是java的布尔字面变量,表示真和假。虽然它们不是关键字,但它们在java中具有特殊的含义,不能用作变量名或标识符。

(3)“null”java的空字面量,表示一个空引用。虽然塔不是关键字,但它也具有特殊的含义,不能用作变量名或标识符。

(4)所有的java关键字都是小写字母,为了代码的可读性和一致性,建议避免使用关键字的其他形式来命名变量、方法、类、包等标识符。

Java的基本数据类型

数据是描述客观事实的数字、字母以及能够输入到计算机中的符号。

Java是强类型语言,强类型语言要求变量使用前要进行定义,在定义时需要明确变量的数据类型。Java中的数据类型分为两大类,第一类是引用数据类型,第二类是基本数据类型也叫原始类型。

基本数据类型

基本数据类型有8种

image-20230806174942027

基本数据类型的取值范围

image-20230806175234914

[修饰符] 变量类型 变量名 [= 初始值];

注意:

(1)char类型表示字符型,字符型是用单引号引起来的单个字符。

(2)long类型的数据以L(不区分大小写)结尾,例如100L表示long类型的数据,而100表示int类型的数据。

(3)float类型的数据以F(不区分大小写)结尾,例如3.14F表示float类型的数据,而3.14表示double类型的数据。

引用数据类型

引用数据类型包括类、接口、数组、枚举。字符串属于引用数据类型。

注意:

基本数据类型定义的变量中存储的是真实数据,引用类型定义的变量中存储的是地址。

基本数据类型间的转换

类型转换的形式总体分为2种,一种是自动类型转换(扩展原始转换),一种是强制类型转换(缩小原始转换)。

自动类型转换

什么是自动类型转换呢?
    答:自动类型转换指的是,数据范围小的变量可以直接赋值给数据范围大的变量
    byte a = 12;
	int b = a; // 这里就发生了自动类型转换(把byte类型转换int类型)

自动类型转换的原理是怎样的?
    答:自动类型转换其本质就是在较小数据类型数据前面,补了若干个字节 1

转换顺序如下图所示

image-20230806181041064

下面我们通过代码演示一下,自动类型转换的各种形式。

public class TypeConversionDemo1 {
public static void main(String[] args) {
// 目标:理解自动类型转换机制。
byte a = 12; // 8位
int b = a; // 32位
System.out.println(a); // 12
System.out.println(b); // 12
int c = 100; // 32位
double d = c; // 64位
System.out.println(d); // 100
char ch = 'a'; // 16位
int i = ch; // 32位
System.out.println(i); // 97
}
}
  • 表达式的自动类型转换

自动类型转换还有另外一种形式,就是表达式的自动类型转换。所谓表达式指的是几个变量或者几个数据一起参与运算的式子。

如果同一个表达式中,出现不同类型的变量或者数据一起运算,这种情况下运算结果是一个什么数据类型呢?需要遵守下面的两条运算规则:

多种数据类型参与运算,其结果以大的数据类型为准
byte,short,char 三种类型数据在和其他类型数据运算时,都会转换为int类型再运算

强制类型转换

数据范围大的数据,赋值给数据范围小的变量,它有可能装不下;就像把一个大桶的水倒入一个小桶中,有溢出的风险。

  • 什么是强制类型转换

但是你强行将范围大的数据,赋值给范围小的变量也是可以的,这里就需要用到强制类型转换。下面是强制类型转换的格式

目标数据类型 变量名 = (目标数据类型)被转换的数据;
int a = 10;
byte b = (byte)a;
int a = 128;
byte b = (byte)a;
public class TypeConversionDemo3 {
public static void main(String[] args) {
// 目标:掌握强制类型转换。
int a = 20;
byte b = (byte) a;
System.out.println(a);
System.out.println(b);
int i = 1500;
byte j = (byte) i;
System.out.println(j);
double d = 99.5;
int m = (int) d; // 强制类型转换
System.out.println(m); // 丢掉小数部分,保留整数部分
}
}
  • 强制类型转换的原理

    强制类型转换的原理,其实就是强行把前面几个字节砍掉,但是有数据丢失的风险。

字符在计算机中的存储原理

其实字符并不是直接存储的,而是把每一个字符编为一个整数,存储的是字符对应整数的二进制形式。美国人搞了一套字符和整数的对应关系表,叫做ASCII编码表。

ASCII编码表中字符编码的规律:
1.字符0对应48,后面的1,2,3,4...9 对应的十进制整数依次往后顺延
2.字符a对应97,后面的b,c,d,e...z 对应的十进制整数依次往后顺延
3.字符A对应65,后面的B,C,D,E...Z 对应的十进制整数依次往后顺延

image-20230806181747591

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值