Java语法之一:基本程序结构(1)
正文
1.1 数据类型
整型
整型是有符号的整数,Java中不含无符号整型
。
1.int 4字节 ( 取值范围约为-20亿到正20亿)
2.Long 8字节
3.short 2字节
4.byte 1字节 (取值范围为[-128~127])
浮点类型
浮点类型表示有符号的小数。
1.float 4字节 (取值范围约为±3.402823 e+38)
2.double 8字节(取值范围约为±1.79769313486231570 e+308)
char类型
char 2字节 表示单个字符。也可以用\u加4个16进制数来表示,\u0000~\uffff。
boolean类型
boolean (布尔)类型有两个值:false 和 true, 用来判定逻辑条件 整型值和布尔值之间
不能进行相互转换。
1.2
1.2 变量与常量
在 Java 中,每个变量都有一个类型( type)。在声明变量时,变量的类型位于变量名之
前。
声明变量和变量初始化:
int a;//声明一个整型变量,变量名为a
int b = 2;//声明一个整型变量,变量名为b,将2赋给b作为它的值。变量的初始化
在 Java 中, 利用关键字 final 指示常量,变量名通常全大写。赋值之后就不可以更改。
例如:
final double PI = 3.14159;
1.3 运算符
1.3.1 类型转换
对于二元运算 a operation b:
•如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。
•否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。
•否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。
•否则, 两个操作数都将被转换为 int 类型。
1.3.2 强制类型转换
图中有 6 个实心箭头,表示无信息丢失的转换;有 3 个虚箭头, 表示可能有精度损失的转换。
强制类型转换则是完成虚箭头所表示的转换。
例如:
double x = 9.997;
int nx = (int) x;//将x强制转换为int型
1.3.3 结合赋值运算符
+=,-=,/=, *=….
a += b相当于a=a+b
如果运算符得到一个值,其类型与左侧操作数的类型不同,救会发生强制类型转换。
如:
int x = 0;
x += 3.5;//是合法的,将把x设置为(int)(x + 3.5)
1.3.4 三目运算符
x = conditon?expression1:expression2
condition为true,则x = expression1
condition为false,则x = expresson2
1.3.5 运算符优先级和结合性
从上到下是优先级从高到低,右侧一列是各个运算符的结合性)
1.4 枚举类型
枚举类型包括有限个命名的值。
也就是说,可以自定义一个只能取某几个特定的值的类型,如服装大小:S,M,L,X。
enum Size{“SMALL”,“MEDIUM”,“LARGE”,“EXTRA_LARGE”};
1.5 字符串
每个用双引号括起来的字符串都是 String类的一个实例。
1.5.1 子串
String greeting = “Hello”;
String S = greeting.subString(0,3);
//S是“Hel”,不包括从0开始第三个字符。
//S.subString(a,b)长度为b-a
1.5.2 拼接
把多个字符串直接拼接用 ‘+’。
把多个字符串之间加上分隔符,如 ‘/‘ 用静态方法 String.join() 方法拼接在一起。
例:
String all = String.join("/","S","M","L","XL"); //all的值为"S/M/L/XL"
1.5.3 不可变字符串
字符串不可修改,只能重新赋值。
1.5.4 判断字符串是否相等
用String的实例化方法s.equals(t); 返回值是boolean值,相等返回true,不相等返回false。
注意:
1.不要用“= =”判断字符串是否相等
,Java字符串是一个指针,如果两字符串指向的位置不同,但这两个位置保存的内容一样,还是会判断为不相等。
2.判断串是否为“NULL”用“= = ”,串值为“NULL”与空串不等价。
空串是一个字符串对象,只是长度为0,可以调用实例函数。
串值NULL表示没有任何对象与之关联,不可以调用函数。
例:
String a = "";
String b = NULL;
a.length(); //no error
b.length(); //error 无法调用方法
1.5.5 String 常用函数
• char charAt (int index)
返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个方法。
• int codePointAt(int Index) 5.0
返回从给定位置开始的码点。
• int offsetByCodePoints(int startlndex, int cpCount) 5.0
返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。
• int compareTo(String other)
按照字典顺序,如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之 后,返回一个正数;如果两个字符串相等,返回 0。
• IntStream codePoints() 8
将这个字符串的码点作为一个流返回。调用 toArray 将它们放在一个数组中。
• new String(int[] codePoints, int offset, int count) 5.0
用数组中从 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 1astIndexOf(String str)
•int 1astIndexOf(String str, int fromlndex )
•int lastindexOf(int cp)
•int 1astindexOf(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 trim( )
返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。
•String join(CharSequence delimiter, CharSequence … elements ) 8
返回一个新字符串, 用给定的定界符连接所有元素。