Java基本程序设计结构(1)
一个简单的应用程序
public class Sample{
public static void main(String[] args){
System.out.println("That is a Sample Class");
}
}
注意事项:
- 源代码文件名必需与公共类名相同,此类的文件名必需为Sample.java
- 一个.java
文件中只能有一个公共类
注释
Java一共有三种注释方法,与C++一样,分别是
- 单行注释:使用//
在每行开头注释
- 第一种多行注释使用/*
开头,*/
结尾
- 第二种多行注释使用/**
开头,*/
结尾
数据类型
整型
Java提供四种整型,如下表所示:
类型 | 存储长度 | 取值范围 |
---|---|---|
int | 4字节 | -2147483648~2147483647 |
short | 2字节 | -32768~32767 |
long | 8字节 | -9223372036854775808~9223372036854775807 |
byte | 1字节 | -128~127 |
注意:
- 不管在16位、32位、64位机上,java整型的长度始终固定不变 ,这为Java的一份代码,到处执行提供了方便
- 对于long类型,后面有一个后缀L或者l
浮点类型
浮点类型用于表示有小数部分的数值,在Java中有两种浮点类型
类型 | 存储长度 | 取值范围 |
---|---|---|
float | 4字节 | 大约±3.40282347E+38F |
double | 8字节 | 大约±1.79769313486231570E+308 |
注意:
- float类型的数值后有一个后缀F或者f,没有后缀的数据被认为是double类型
- 三个特殊的浮点数值:正无穷大、负无穷大、NaN(不是一个数值)。例如:正整数除以0的结果是正无穷大,0/0得到的结果为NaN
- 所有的非数值的值都认为是不相同的,可以使用isNaN方法判断
char类型
char类型用于表示单个字符。有些Unicode字符可以用一个char描述,但有些需要用两个cahr描述
boolean类型
boolean(布尔)类型有两个值:false和true。
注意:
- 布尔值和整型值不可相互转换
- 与C++不同的是,在C++中0相当于false,而非0值相当于true,而Java中则不可以
变量和常量
变量初始化
声明变量后,必需使用赋值语句将变量进行显示初始化,千万不可使用未初始化的变量,例如:
int a;
System.out.print(a)//Error variable not initialized
注意:
在C++中会区别变量的声明和定义
如int i=10;
是定义,而
extern int i;
是声明
而在Java中,并不会区分变量的声明和定义
常量
在Java中使用关键字final定义常量,如
final double PI=3.14
凡是使用final定义的变量只能赋值一次,一旦被赋值后就不能再更改了。
运算符
算数运算符
使用算术运算符+、-、 *、/ 表示加、减、 乘、 除
运算。 当参与 /
运算的两个
操作数都是整数时, 表示整数除法;否则, 表示浮点除法。 整数的求余操作(有时称为取模)
用%
表示。 例如, 15/2 等于 7, 15%2 等于 1, 15.0/2 等于 7.5。
注意:
整数被 0 除将会产生一个异常, 而浮点数被 0 除将会得到无穷大或NaN
结果。
数值类型转换
默认类型转化
- 如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。
- 否则, 如果其中一个操作数是 float 类型, 另一个操作数将会转换为 float 类型。
- 否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。
- 否则, 两个操作数都将被转换为 int 类型。
强制类型转化
在圆括号中给出想要转换的目标类型,后面紧跟待转换的变
量名。
其他运算符
如下:
- 结合赋值和运算符,如:+=、*=、/=
- 自增和自减运算符,++、–
- 关系运算符,如:==、!=
- 逻辑运算符,如:&&、||
- 三目运算符,condition ? expression1 : expression2
- 位运算符,& (“and”) | (“or”) A (“XOr”) ~ (“not”)
字符串
Java提供String
类定义字符串
字符串定义
String greeting=“Hello”;
子串
String s=greeting.substring(0,3);
得到的结果s为"Hel"
拼接
可以使用+拼接两个子串
检测字符串是否相等
与C++不同的是,Java不可以使用过
==
判断字符串是否相等,而应该使用字符串的equals
方法检测
String API
Java中的String类包含了50多个方法,常见的有:
- char charAt (int index)
返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个
方法。
- int codePointAt(int Index)
返回从给定位置开始的码点。
- int offsetByCodePoints(int startlndex, int cpCount)
返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。
- int compareTo(String other)
按照字典顺序, 如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之
后,返回一个正数; 如果两个字符串相等,返回 0。
- IntStream codePoints()
将这个字符串的码点作为一个流返回。调用 toArray 将它们放在一个数组中。
- new String(int[] codePoints, int offset, int count)
用数组中从 offset 开始的 count 个码点构造一个字符串。
- boolean equals(0bject other)
如果字符串与 other 相等, 返回 true。
- boolean equalsIgnoreCase( String other )
如果字符串与 other 相等 (忽略大小写,) 返回 tme。
- boolean startsWith( String prefix )
- boolean endsWith( String suffix )
如果字符串以 suffix 开头或结尾, 则返回 true。
- int indexOf ( String str )
- int indexOf( String str, int fromlndex )
- int indexOf ( int cp)
- int indexOf( int cp, int fromlndex )
返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或
fromlndex 开始计算。 如果在原始串中不存在 str, 返回 -1。
- int lastIndexOf( String str )
- Int lastIndexOf ( String str, int fromlndex )
- int lastindexOf( int cp)
- int lastindexOf( int cp, int fromlndex )
返回与字符串 str 或代码点 cp 匹配的最后一个子串的开始位置。 这个位置从原始串尾
端或 fromlndex 开始计算。
- int length( )
返回字符串的长度。
- int codePointCount( int startlndex, int endlndex ) 5.0
返回 startlndex 和 endludex-l 之间的代码点数量。没有配成对的代用字符将计入代码点。
參 String replace( CharSequence oldString,CharSequence newString)
返回一个新字符串。这个字符串用 newString 代替原始字符串中所有的 oldString。可
以用 String 或 StringBuilder 对象作为 CharSequence 参数。
- String substring( int beginlndex )
參 String substring(int beginlndex, int endlndex )
返回一个新字符串。这个字符串包含原始字符串中从 beginlndex 到串尾或 endlndex-l
的所有代码单元。
- String toLowerCase( )
參 String toUpperCase( )
返回一个新字符串。 这个字符串将原始字符串中的大写字母改为小写,或者将原始字
符串中的所有小写字母改成了大写字母。
- String t r i m( )
返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。
- String join(CharSequence delimiter, CharSequence… elements )
返回一个新字符串, 用给定的定界符连接所有元素。
构建字符串
有些时候, 需要由较短的字符串构建字符串, 例如, 按键或来自文件中的单词。采用字
符串连接的方式达到此目的效率比较低。 每次连接字符串, 都会构建一个新的 String 对象,
既耗时, 又浪费空间。使用 StringBuildei •类就可以避免这个问题
- 构建一个新的字符串构建器
StringBuilder builder=new StringBuilder();
- 使用append添加内容
builder.append("hello");
常用方法如下:
• StringBuilder()
构造一个空的字符串构建器。
• int length()
返回构建器或缓冲器中的代码单元数量。
• StringBuilder append(String str)
追加一个字符串并返回 this 。
• StringBuilder append(char c)
追加一个代码单元并返回 this。
• StringBuilder appendCodePoint(int cp)
追加一个代码点,并将其转换为一个或两个代码单元并返回 this 。
• void setCharAt(int i ,char c)
将第 i 个代码单元设置为 c。
• StringBuilder insert(int offset,String str)
在 offset 位置插入一个字符串并返回 this。
• StringBuilder insert(int offset,Char c)
在 offset 位置插入一个代码单元并返回 this。
• StringBuilder delete(int startindex,int endindex)
删除偏移量从 startindex 到endindex-1 的代码单元并返回 this。
• String toString()
返回一个与构建器或缓冲器内容相同的字符串