Java 介绍

Java 简介

  • Java 是美国 Sun 公司(Stanford University Network)在 1995 年推出的计算机语言。
  • Java 之父:詹姆斯·高斯林(James Gosling)
  • 2009 年,Sun 公司被甲骨文公司收购。

Java 语言的三个版本:

  • JavaSE: Java 语言的标准版,用于桌面应用的开发,是以下两个版本的基础。
  • JavaME: Java 语言的小型版,用于嵌入式消费类电子设备。
  • JavaEE: Java 语言的企业版,用于 Web 方向的网站开发。

Java 语言跨平台原理

Java 程序并非是直接运行的,而是 Java 编译器将 Java 源程序编译成与平台无关的字节码文件(class 文件),然后由 Java 虚拟机(JVM)对字节码文件解释执行。

所以在不同的操作系统下,只需安装不同的 Java 虚拟机即可实现 Java 程序的跨平台。

JRE 和 JDK

  • JVM(Java Virtual Machine):Java 虚拟机。
  • JRE(Java Runtime Environment):Java 运行环境,包含了 JVM 和 Java 的核心类库(Java API)。
  • JDK(Java Development Kit):Java 开发工具,包含了 JRE 和开发工具。

总结:只需安装 JDK 即可,它包含了 Java 的运行环境和虚拟机。

JDK 下载/安装说明

通过 Oracle 官方网站下载对应版本的 JDK。

JDK 安装目录说明:

目录名称 说明
bin 该路径下存放了 JDK 的各种工具命令。javac 和 java 就放在这个目录。
conf 该路径下存放了 JDK 的相关配置文件。
include 该路径下存放了一些平台特定的头文件。
jmods 该路径下存放了 JDK 的各种模块。
legal 该路径下存放了 JDK 各模块的授权文档。
lib 该路径下存放了 JDK 工具的一些补充 JAR 包。

Java 语法说明

“Hello World”示例:

注释

注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要。

Java 中的注释分为三种:

1)单行注释:单行注释的格式是使用//,从//开始至本行结尾的文字将作为注释文字。

// 单行注释

2)多行注释:多行注释的格式是使用/**/将一段较长的注释括起来。

/*
多行注释
注意:多行注释不能嵌套使用
*/

3)文档注释:文档注释以/**开始,以*/结束,是 Java 特有的注释,其中注释内容可以被 JDK 提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

Javadoc –d 指定存储文档的路径 -version –author(可选参数) 目标文件

关键字

Java 的关键字对 Java 的编译器有特殊的意义,他们常被用来表示一种数据类型,或者表示程序的结构等。关键字不能用作变量名、方法名、类名、包名。

关键字的特点:

  • 关键字的字母全部小写。
  • 常用的代码编辑器对关键字都有高亮显示,比如 public、class、static 等。
  • 注意:main 不是关键字,但可以理解为比关键字更为关键的单词,是 JVM 唯一识别的单词。

标识符

标识符是程序员在编写 Java 程序时,自定义的一些名字,例如 helloworld 程序里关键字 class 后跟的“HelloWorld”,就是我们定义的类名。类名就属于标识符的一种。

标识符除了应用在类名上,还可以用在变量、函数名、包名上。

标识符必须遵循以下规则:

  • 标识符由英文字符大(a~zA~Z)、数字(0~9)、下划线(_)和美元符号($)组成。
  • 不能以数字开头,不能是关键字。
  • 区分大小写。
  • 标识符可以为任意长度。

Java 中的标识符命名规范:

  • 包名:多个单词组成时所有字母小写(例:package、com.util)
  • 类名和接口名:多个单词组成时所有单词的首字母大写(例:HelloWorld)
  • 变量名和函数名:多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:lastAccessTime、getTime)。
  • 常量名:多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:INTEGER_CACHE)

注意:上述只是为了增加代码规范性、可读性而做的一种约定,但在定义标识符时最好还是见名知意,提高代码阅读性。

数据类型

Java 是一个强类型语言,Java 中的数据必须明确数据类型。

在 Java 中的数据类型包括基本数据类型和引用数据类型两种。

基本数据类型

Java 的基本数据类型有 4 类 8 种:

四类 八种 内存占用(字节) 取值范围 说明
整数类型 byte 1 最小值是 -128(-2^7)
最大值是 127(2^7-1)
默认值是 0
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一。
short 2 最小值是 -32768(-2^15)
最大值是 32767(2^15 - 1);
默认值是 0
short 数据类型也可以像 byte 那样节省空间。一个 short 变量是 int 型变量所占空间的二分之一。
int(默认类型) 4 最小值是 -2,147,483,648(-2^31)
最大值是 2,147,483,647(2^(31-1))
默认值是 0
long 8 最小值是 -9,223,372,036,854,775,808(-2^63)
最大值是 9,223,372,036,854,775,807(2^(63-1))
默认值是 0L
这种类型主要使用在需要比较大整数的系统上;
"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
浮点类型 float 4 默认值是 0.0f float 数据类型是单精度、32 位、符合IEEE 754 标准的浮点数;
范围规模可变,保留 7 位小数;
float 在储存大型浮点数组的时候可节省内存空间;
浮点数不能用来表示精确的值,如货币;
double(默认类型) 8 默认值是 0.0d double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
范围规模可变,保留 15 位小数;
浮点数的默认类型为 double 类型;
double类型同样不能表示精确的值,如货币。
字符类型 char 2 最小值是 \u0000(十进制等效值为 0)
最大值是 \uffff(即为 65535)
char 类型是一个单一的 16 位 Unicode 字符;
char 数据类型可以存储任何字符。
布尔类型 boolean 1 只有两个取值:true 和 false
默认值是 false
boolean 数据类型表示一位的信息。

引用数据类型

引用数据类型有类(class)、接口(Interface)、数组(Array)等。

Book b = new Book();
Book c = new Book();
// 声明两个 Book 的引用变量并创建两个 Book 对象,然后将 Book 对象赋值给引用变量。
b = c;
// 把变量 c 赋值给变量 b,此时 b、c 对应 Book2,而 Book1 已经没有引用,会被垃圾回收。
c = null;
// 代表它不再引用任何事物,但还是个可以被指定引用其他Book的引用变量。

隐式类型转换

隐式类型转换是指把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。

这种转换方式是自动的,直接书写即可。例如:

double num = 10;  // 将 int 类型的 10 直接赋值给 double 类型
System.out.println(num); // 输出 10.0

整数默认是 int 类型,因此 byte、short 和 char 类型数据在参与整数运算均会自动转换为 int 类型。

即多个不同数据类型的数据在运算的时候,结果取决于大的数据类型。

强制类型转换

强制类型转换是指把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。

强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;

示例:

double num1 = 5.5;
int num2 = (int) num1; // 将 double 类型的 num1 强制转换为 int 类型
System.out.println(num2); // 输出 5(小数位直接舍弃)

案例:

byte a = 3;
byte b = 4;
byte c = a + b; // 错误。因为两个 byte 变量相加,会先提升为 int 类型
byte d = 3 + 4; // 正确。常量优化机制

常量优化机制:在编译时,整数常量的计算会直接算出结果,并且会自动判断该结果是否在byte取值范围内,在则编译通过,不在则编译失败。

编译器在编译的时候能确认常量的值,但不能确认变量的值,变量存储的值只有在运行的时候才会在内存分配空间。

变量

变量的定义:在程序运行过程中,其值可以发生改变的量。

从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。

变量的定义方式有如下 3 种:

  1. 声明变量并赋值
数据类型 变量名 = 初始化值;
int age = 18;
System.out.println(age);
  1. 先声明,后赋值(在使用前赋值即可)
数据类型 变量名;
变量名 = 初始化值;
double money;
money = 55.5;
System.out.println(money);
  1. 在同一行定义多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,因为降低了程序的可读性。
int a = 10, b = 20;  // 定义int类型的变量a和b,中间使用逗号隔开
System.out.println(a);
System.out.println(b); int c,d; // 声明int类型的变量c和d,中间使用逗号隔开
c = 30;
d = 40;
System.out.println(c);
System.out.println(d);

变量的修改:

int a = 10;
a = 30; // 变量前面不加数据类型时,表示修改已存在的变量的值。
System.out.println(a);

Java 简介与安装、语法说明、数据类型的更多相关文章

  1. Oracle中PL/SQL简介、基本语法以及数据类型

    Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...

  2. Java基础:Java简介及安装配置(1)

    Java简介 Java是Sun公司于1995年推出的高级编程语言,具有跨平台特性,编译后的程序能够运行在多种类型的操作系统平台上. 1.1 Java应用程序版本 Java的3个独立用于开发不同类型应用 ...

  3. java 复习整理(一 java简介和基础语法)

    现在公司用的是封装太多东西的平台开发,觉着之前学的东西很多都忘了,所以想好好总结回顾一下.之前总是想学很多编程语言像python.s6.node.react,但现在越来越体会到编程语言只是一个开发的工 ...

  4. Java简介(3)-基本语法

    1.大小写敏感 2.类名 3.方法名. 4.源文件名

  5. Java Gradle入门指南之简介、安装与任务管理

        这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍.    ...

  6. 002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介

    002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介 学习Java的基础语法 Java是一门编程语言,学习的逻辑其实和现实世界的语言是一样的,需要了 ...

  7. redis简介、安装、配置和数据类型

    redis简介.安装.配置和数据类型 redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理. 它支持字符串.哈希表.列表.集合.有序集合, ...

  8. Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解

    文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...

  9. java大数据最全课程学习笔记(1)--Hadoop简介和安装及伪分布式

    Hadoop简介和安装及伪分布式 大数据概念 大数据概论 大数据(Big Data): 指无法在一定时间范围内用常规软件工具进行捕捉,管理和处理的数据集合,是需要新处理模式才能具有更强的决策力,洞察发 ...

随机推荐

  1. 【LeetCode】738. 单调递增的数字

    738. 单调递增的数字 知识点:字符串:贪心 题目描述 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x ...

  2. 关于c++ STL map 和 unordered_map 的效率的对比测试

    本文采用在随机读取和插入的情况下测试map和unordered_map的效率 笔者的电脑是台渣机,现给出配置信息 处理器 : Intel Pentium(R) CPU G850 @ 2.90GHz × ...

  3. Eclipse中的项目红叉问题查找记录

    1.先查看项目的validation有没有都勾上,如果都勾上,一般项目下边的文件夹下会显示出来.可以解决. 2.如果项目文件夹下各个红叉都解决了,没有什么报错了.那么可以看下工具的problem标签下 ...

  4. 【笔记】模型泛化与岭回归与LASSO

    模型泛化与岭回归与LASSO 模型正则化 模型正则化,简单来说就是限制参数大小 模型正则化是用什么思路来解决先前过拟合的由于过于拟合导致的曲线抖动(线性方程前的系数都很大) 线性回归的目标就是求一个最 ...

  5. Python - typing 模块 —— TypeVar 泛型

    前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...

  6. 利用Nginx实现反向代理web服务器

    一.Nginx简介 Nginx是一个很强大的高性能Web服务器和反向代理服务器,它具有很多非常优越的特性: 可以高并发连接 内存消耗少 成本低廉 配置文件非常简单 支持Rewrite重写 内置的健康检 ...

  7. 007 GMII、SGMII和SerDes的区别和联系

    一.GMII和SGMII的区别和联系 GMII和SGMII区别,上一篇已经介绍了,这一篇重点介绍SGMII和SerDes区别. GMII和SGMII GMII 在MII接口基础上提升了数据位宽和Clo ...

  8. mysql使用 分区表使用,常用sql

    mysql使用 分区表使用,常用sql 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/84839478未经博主允许不得转载 ...

  9. NOIP 模拟 $32\; \rm Smooth$

    题解 \(by\;zj\varphi\) 很简单的贪心题. 开 \(B\) 个队列,每个队列存最后一次乘上的数为当前队列编号的数. 每次去所有队列中队首的最小值,不用开堆,因为开堆用于将所有数排序,但 ...

  10. GC垃圾收集器

    垃圾收集器是垃圾收集算法的具体实现,是执行垃圾收集算法的,是守护线程. HotSport虚拟机采用分代收集(JVM规范并未对堆区进行划分),将堆分为年轻代和老年代,垃圾收集器也是这样组合使用的,不过已 ...