文章目录

  • 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 一致,不过它会忽视大小写。
  • 字符串连接
    字符串连接有两种方法:
  1. 使用+,比如String s = "Hello " + “World!”
  2. 使用 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 中的方法,可以将其看成一个功能的集合,它们是为了解决特定问题的代码组合。方法的定义语法:

访问修饰符 返回值类型 方法名(参数列表){
    方法体
}
  1. 访问修饰符:代表方法允许被访问的权限范围, 可以是 public、protected、private 或者省略(default) ,其中 public 表示该方法可以被其他任何代码调用。
  2. 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void (代表无类型);如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。
  3. 方法名:是方法的名字,必须使用合法的标识符。
  4. 参数列表:是传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
  5. 方法体:方法体包含具体的语句,定义该方法的功能。
    根据方法是否带参、是否带返回值,可将方法分为四类:无参无返回值方法,无参带返回值方法,带参无返回值方法,带参带返回值方法。当方法定义好之后,需要调用才可以生效,我们可以通过 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