文章目录
- Java 概述及版本
- HelloWorld
- 变量
- 常量
- 数据类型
- String
- 运算符
- 算术运算符
- 位运算符
- 逻辑运算符
- 关系运算符
- 关系优先级
- 关键字和语句
- 方法
- 流程控制
- 数组
- 用户输入操作
Java 概述及版本
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言(以下简称 Java 语言)和 Java 平台的总称。Java 语言是一种面向对象的编程语言。虽然 Java 仅仅只产生了短短 20 年,但是它的发展是非常迅速的。在 2009 年 4 月 20 号,ORACLE 收购了 Sun 公司,也就是说 Java 这门语言现在归属于 ORACLE 这家公司门下。
在 Java 这门语言体系当中,最基础的部分就是 Java SE 部分,Java 的标准版本。它包括 Java 最基础的一些结构,包括面向对象的一些特性等等,同时它也是 Java 技术基础和核心。在 Java SE 的基础之上,又分为了 Java EE(Java 的企业版),应用于大型企业级应用的开发。Java ME 主要用于嵌入式开发。初学的时候我们都是从 Java SE 开始的。
JVM 叫 Java 虚拟机,它也是整个 Java 技术的核心。Java 语言的跨平台就多亏了 JVM。JDK 叫 Java 开发工具包,没有 JDK 就没有办法进行 Java 程序的开发。JRE 叫 Java 运行环境,如果我们需要运行一个 Java 程序,就得安装 JRE。
HelloWorld
kenneth-X556UJ% touch HelloWorld.java
kenneth-X556UJ% vi HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
编译执行
kenneth-X556UJ% javac HelloWorld.java
kenneth-X556UJ% java HelloWorld
Hello, World!
变量
变量可以指在计算机存储器里存在值的被命名的存储空间。
变量通常是可被修改的,即可以用来表示可变的状态。这是 Java 的基本概念之一。
程序通过改变变量的值来改变整个程序的状态。为了方便使用变量,所以变量都需要命名,叫做变量名。
语法格式:数据类型 变量名称
例如:
int a = 50;
常量
常量代表程序运行过程中不能改变的值。我们也可以把它们理解为特殊的变量,只是它们在程序的运行过程中是不允许改变的。常量的值是不能被修改的。
Java 中的final关键字可以用于声明属性(常量),方法和类。当final修饰属性时,代表该属性一旦被分配内存空间就必须初始化, 它的含义是“这是无法改变的”或者“终态的”。在变量前面添加关键字final即可声明一个常量。在 Java 编码规范中,要求常量名必须大写。
语法格式:final 数据类型 常量名 = 值
例如:
final double PI = 3.14;
数据类型
Java 中一共八种基本数据类型,下表列出了基本数据类型的数据范围、存储格式、默认值、包装类型等。
数据类型 | 默认值 | 存储格式 | 数据范围 |
short | 0 | 2字节 | -32,768 到 32767 |
int | 0 | 4字节 | -2,147,483,648 到 2,147,483,647 |
byte | 0 | 1字节 | -128 到 127 |
char | 空 | 2字节 | Unicode 的字符范围:’\u0000’(即为 0)到’\uffff’(即为 65,535) |
long | 0L或0l | 8字节 | -9,223,372,036,854,775,808 到 9,223,372,036, 854,775,807 |
float | 0.0F或0.0f | 4字节 | 32 位 IEEEE-754 单精度范围 |
double | 0.0或0.0D(d) | 8字节 | 64 位 IEEE-754 双精度范围 |
boolean | false | 1位 | true 或 false |
- 整数
byte、short、int、long 四种基本数据类型表示整数,需要注意的是 long 类型,使用 long 修饰的变量需要在数值后面加上 L 或者 l,比如long num=1L;,一般使用大写 L,为了避免小写 l 与数值 1 混淆。 - 浮点数
float 和 double 类型表示浮点数,即可以表示小数部分。需要注意的是 float 类型的数值后面需要加上 F 或者 f,否则会被当成 double 类型处理。double 类型的数值可以加上 D 或 d,也可以不加。 - char 类型
char 类型用于表示单个字符。需要将字符用单引号括起来char a=‘a’,char 可以和整数互相转换,如果字符a也可以写成char a=97。也可以用十六进制表示char a = ‘\u0061’。 - boolean 类型
boolean 类型(布尔类型)用于表示真值true或者假值false,Java 中布尔值不能和整数类型或者其它类型互相转换。
String
Java 中使用 String 类来定义一个字符串,字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。String 对象的初始化格式有如下两种:
String s0 = "abc";
String s1 = new String("abd");
String 类具有丰富的方法,比如计算字符串的长度、连接字符串、比较字符串、提取字符串等等。
- 计算字符串长度
调用方法:字符串标识符.length();
String s1 = "abc";
String s2 = "Java语言";
int len1 = s1.length();
int len2 = s2.length();
- 字符串比较
equals() 方法比较是从第一字符开始,一个字符一个字符依次比较。
如果想忽略掉大小写关系,其用法与 equals 一致,不过它会忽视大小写。 - 字符串连接
字符串连接有两种方法:
- 使用+,比如String s = "Hello " + “World!”
- 使用 String 类的 concat() 方法
例如:
String s0 = new String("Hello ");
String s1 = "World" + "!"; //+号连接
String s2 = s0.concat(s1); //concat()方法连接
System.out.println(s2);
- charAt()方法
charAt()方法的作用是按照索引值(规定字符串中第一个字符的索引值是 0,第二个字符的索引值是 1,依次类推),获得字符串中的指定字符。例如:
String s = "abc";
char c = s.charAt(1);
- 字符串常用提取方法
方法 | 返回值 | 功能描述 |
indexOf(char ch) | int | 搜索字符 ch 第一次出现的索引 |
indexOf(String value) | int | 搜索字符串 value 第一次出现的索引 |
lastIndexOf(char ch) | int | 搜索字符 ch 最后一次出现的索引 |
lastIndexOf(String value) | int | 搜索字符串 value 最后一次出现的索引 |
substring(int index) | String | 提取从位置索引开始到结束的字符串 |
substring(int beginindex, int endindex) | String | 提取 beginindex 和 endindex 之间的字符串部分 |
trim() | String | 返回一个前后不含任何空格的调用字符串的副本 |
运算符
运算符顾名思义是一种符号,它是连接一个以上的操作符,实现某种功能的运算。
算术运算符
算术运算符 | 名称 | 描述 | 类型 |
+ | 加法 | 相加运算符两侧的值 | 双目运算符 |
- | 减法 | 左操作数减去右操作数 | 双目运算符 |
* | 乘法 | 相乘操作符两侧的值 | 双目运算符 |
/ | 除法 | 左操作数除以右操作数 | 双目运算符 |
% | 取余 | 左操作数除右操作数的余数 | 双目运算符 |
+ + | 自增 | 操作数的值增加 1 | 单目云算符 |
- - | 自减 | 操作数的值减少 1 | 单目运算符 |
位运算符
位运算符 | 名称 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位补 |
<< | 按位左移 |
>> | 按位右移 |
>>> | 按位右移补零 |
逻辑运算符
逻辑运算符是通过运算符将操作数或等式进行逻辑判断的语句。
逻辑运算符 | 名称 |
&& | 与 |
|| | 或 |
! | 非 |
^ | 异或 |
关系运算符
关系运算符生成的是一个 boolean(布尔)结果,它们计算的是操作数的值之间的关系。如果关系是真实的,结果为 true(真),否则,结果为 false(假)。
比较运算符 | 名称 |
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
关系优先级
优先级 | 运算符 | 方向性 |
1 | ++自增后缀、- -自减后缀、()、[]、{}、. 、-> | 从左到右 |
2 | ++自增前缀、- -自增前缀、+、- 、!、~、(type)、*、&、sizeof | 从右到左 |
3 | *、/、% | 从左到右 |
4 | +、- | 从左到右 |
5 | <<、>> | 从左到右 |
6 | <、>、<=、>= | 从左到右 |
7 | ==、!= | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ?: | 从右到左 |
14 | =、*=、/=、%=、+=、-=、<<=、>>=、&=、|=、^= | 从右到左 |
15 | , | 从左到右 |
关键字和语句
Java 的关键字对 java 的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。
Java 关键字有如下表所列,目前共有 50 个 Java 关键字,其中,"const"和"goto"这两个关键字在 Java 语言中并没有具体含义。
方法
Java 中的方法,可以将其看成一个功能的集合,它们是为了解决特定问题的代码组合。方法的定义语法:
访问修饰符 返回值类型 方法名(参数列表){
方法体
}
- 访问修饰符:代表方法允许被访问的权限范围, 可以是 public、protected、private 或者省略(default) ,其中 public 表示该方法可以被其他任何代码调用。
- 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void (代表无类型);如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。
- 方法名:是方法的名字,必须使用合法的标识符。
- 参数列表:是传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- 方法体:方法体包含具体的语句,定义该方法的功能。
根据方法是否带参、是否带返回值,可将方法分为四类:无参无返回值方法,无参带返回值方法,带参无返回值方法,带参带返回值方法。当方法定义好之后,需要调用才可以生效,我们可以通过 main 方法(main 方法是 Java 程序的入口,所以需要用它来调用)来调用它。
public class MethodDemo {
public static void main(String[] args) {
method();
}
public static void method() {
System.out.println("调用方法");
}
}
kenneth-X556UJ% javac MethodDemo.java
kenneth-X556UJ% java MethodDemo
调用方法
流程控制
流程控制对任何一门编程语言都是至关重要的,它为我们提供了控制程序步骤的基本手段。常见对主要分为,条件语句、循环语句、跳转语句。
(此内容与C/C++类似,不再赘述)
数组
数组就是相同数据类型的元素按一定顺序排列的集合。可以把它看成一个大的盒子,里面按顺序存放了多个数据类型相同的数据。
使用数组前要声明数组。
数据类型[ ] 数组名; //或者: 数据类型 数组名[ ];
数组名为任意合法的变量名,如:
int ages[]; //存放年龄的数组,类型为整型
char symbol[]; //存放符号的数组,类型为字符型
String [] name; //存放名称的数组,类型为字符串型
声明数组后,需要为数组分配空间,也就是定义多大的数组。语法:
数组名 = new 数据类型 [ 数组长度 ];
数组长度就是数组最多可存放元素的个数。可以在数组声明的时候初始化数组,或者在声明时就为它分配好空间,这样就不用再为数组分配空间。
语法:
int [] ages = {12,18,9,33,45,60}; //声明并初始化了一个整型数组,它有6个元素
char [] symbol = new char[10] //声明并分配了一个长度为10的char型数组
分配空间后就可以向数组中放数据了,数组中元素都是通过下标来访问的。 如:
ages[0]=12;
Java 中可以将一个数组赋值给另一个数组,如:
int [] a1 = {1,2,3};
int [] a2;
a2 = a1;
这里只是复制了一个引用,即 a2 和 a1 是相同数组的不同名称。
- 二维数组
二维数组可以看成是一间有座位的教室,座位一般用第几排的第几个进行定位,每一个座位都有一个行和一个列的属性,一排的座位相当于一个一维数组,所以可以将二维数组简单的理解为是一种“特殊”的一维数组,它的每个数组空间中保存的是一个一维数组。二维数组也需要声明和分配空间。
用户输入操作
Java 可以使用java.util包下的Scanner类来获取用户的输入。使用import java.util.Scanner;即可导入 Scanner。
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
//获取用户输入的一行数据 返回为字符串
String s = in.nextLine();
System.out.println(s);
in.close();
}
}
kenneth-X556UJ% javac ScannerDemo.java
kenneth-X556UJ% java ScannerDemo
hello
hello