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。
JDK、JRE 和 JVM 之间的关系:
变量
变量可以指在计算机存储器里存在值的被命名的存储空间。
变量通常是可被修改的,即可以用来表示可变的状态。这是 Java 的基本概念之一。
程序通过改变变量的值来改变整个程序的状态。为了方便使用变量,所以变量都需要命名,叫做变量名。
在 Java 中,变量需要先声明(declare)才能使用。在声明中,说明变量的类型,赋予变量以特别名字,以便在后面的程序中调用它。你可以在程序中的任意位置声明变量,语法格式如下:
数据类型 变量名称;
例如:
int a = 1;
在该语法格式中,数据类型可以是 Java 语言中任意的类型,如int。变量名称是该变量的标识符,需要符合标识符的命名规则,数据类型和变量名称之间使用空格进行间隔,使用;作为结束。
常量
常量代表程序运行过程中不能改变的值。我们也可以把它们理解为特殊的变量,只是它们在程序的运行过程中是不允许改变的。常量的值是不能被修改的。
Java 中的final关键字可以用于声明属性(常量),方法和类。当final修饰属性时,代表该属性一旦被分配内存空间就必须初始化, 它的含义是“这是无法改变的”或者“终态的”。在变量前面添加关键字final即可声明一个常量。在 Java 编码规范中,要求常量名必须大写。
语法格式:
final 数据类型 常量名 = 值;
例如:
final double PI = 3.14;
常量也可以先声明,再进行赋值,但只能赋值一次,比如:
final int FINAL_VARIABLE; FINAL_VARIABLE = 100;
数据类型
Java 中一共八种基本数据类型,下表列出了基本数据类型的数据范围、存储格式、默认值、包装类型等。
整数
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()方法
//方法原型
public int length(){
}
调用方法:字符串标识符.length();
返回一个 int 类型的整数(字符串中字符数,中文字符也是一个字符)。例如:
String s1 = "abc";
String s2 = "Java语言";
int len1 = s1.length(); // 3
int len2 = s2.length(); // 6
字符串比较
equals() 方法,该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回 true,否则返回 false。
equals() 方法比较是从第一字符开始,一个字符一个字符依次比较。
如果想忽略掉大小写关系,比如:java 和 Java 是一样的,那怎么办呢?可以调用equalsIgnoreCase()方法,其用法与 equals 一致,不过它会忽视大小写。
比如:
public class StringTest {
public static void main(String[] args){
String s = new String("Java");
String m = "java";
System.out.println("用equals()比较,java和Java结果为"+s.equals(m));
System.out.println("用equalsIgnoreCase()比较,java和Java结果为"+s.equalsIgnoreCase(m));
}
}
运行结果如下:
而使用"=="比较的是两个对象在内存中存储的地址是否一样。例如:
String s1 = "abc";
String s2 = new String("abc");
boolean b = (s1 == s2);
则变量 b 的值是 false,因为 s1 对象对应的地址是"abc"的地址,而 s2 使用 new 关键字申请新的内存,所以内存地址和 s1 的"abc"的地址不一样,所以获得的值是 false。
字符串连接
字符串连接有两种方法:
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);
则变量 c 的值是’b’。
字符串常用提取方法
说明:在字符串中,第一个字符的索引为 0,子字符串包含 beginindex 的字符,但不包含 endindex 的字符。
public class StringTest {
public static void main(String[] args) {
String s = "abcdefabc";
System.out.println("字符a第一次出现的位置为"+s.indexOf('a'));
System.out.println("字符串bc第一次出现的位置为"+s.indexOf("bc"));
System.out.println("字符a最后一次出现的位置为"+s.lastIndexOf('a'));
System.out.println("从位置3开始到结束的字符串"+s.substring(3));
System.out.println("从位置3开始到6之间的字符串"+s.substring(3,6));
}
}
运行结果如下: