自动类型转换
- 把一个表示范围小的数值或者变量赋值给另一个表示数据范围大的变量。
- 例如:
double num1 = 1024; System.out.println(num1);
强制类型转
- 把一个表示数据范围大的数值或者变量复制给另一个表示数据范围小的变量。
- 目标数据类型 变量名=(目标数据类型)值或者变量;
double number=1024.1214;
int number2 = (int)number;
System.out.println(number2);
强制类型转换注意事项
- char类型的数据转换为int类型是按照码表中对应的int值进行计算的。
- 整数默认是int型,byte、short、和char类型数据参与运算俊辉自动转换为int类型。
- boolean类型不能与其他基本数据类型相互转换。
运算符
- 算术运算符:+ - * / %
- 注意:整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。
自增运算符与自减运算符
public class Demo09Operator {
public static void main(String[] args) {
int age = 18;
++age;
System.out.println(age);
age++;
System.out.println(age);
int res = ++age;
System.out.println(res);
int res1 = age++;
System.out.println(res1);//不变
int x= 10;
int y = x++ + x++ + x++; //x++ = 11 11+11+11=33
System.out.println(y);
}
}
关系运算符与boolean运算符
- java包含各种关系运算符,其中==检测是否相等,!=检测是否不相等。
- 另外常用的运算符还有< , >,<=,>=,&&表示逻辑“与”||表示逻辑“或”!表示逻辑“非”
- &&和||是按照“短路”方式求值的。如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。
三元运算符
- java支持三元运算符,表达式为:
condition?expression:expression;当条件condition为真时计算第一个表达式,否则计算第二个表达式,例如:
/**
* 使用三元运算符计算出两个整数中的最大值
* 例如:20 40 打印结果:40是最大值
*/
public class Test04 {
public static void main(String[] args) {
int num1=20;
int num2=40;
int maxNum = num1>num2? num1:num2;
System.out.println(maxNum+"是最大值");
}
}
位运算符
- 在处理整形数值时,可以直接对组成整型数值的给个位进行操作。
- & (与) ,|(或),^(异或),!(非)
- & 和 | 运算符应用于布尔值,得到的结果也是布尔值,这两个运算符与&&和 ||的运算符非常相似,只是不按“短路”方式计算。即在得到结果之前,一定要计算两个操作数的值。
- >>和<<运算符讲二进制位进行右移和左移操作,当需要建立位模式屏蔽某些位是。使用这两个运算符非常方便。
数学函数与常量
Math类提供了一些常用的三角函数:
- Math.sin
- Math.cos
- Math.tan
- Math.atan
- Math.atan2
指数函数与它的反函数自然对数
- Math.exp
- Math.log
π和e常量的近似值
- Math.PI
- Math.E
数值类型之间的转换
六个实心箭头,表示无信息丢失的转换,三个虚箭头标示可能有精度损失的转换。
括号与运算符级别
字符串
java字符串就是Unicode字符序列,java没有内置的字符串类型,而是在标准java类库中提供了一个预定义类String。每个用双引号括起来的字符串都是String的一个实例。
String number = "hello world"
字串
String类的subtring方法可以从一个较大的字符串提取出一个字串,例如:
String greeting = "hello world";
String s = greeting.substring(0,3);
- substring的工作方式有一个优点,容易计算子串的长度。
- java语言允许使用+号连接(拼接)两个字符串。
检查字符串是否相等
使用equals方法检测两个字符串是否相等。
String str = "hello";
String string = "world";
boolean equals = str.equals(string);
System.out.println(equals);
代码点与代码单元
java字符串由char序列组成,字符数据类型是一个采用UTF-16编码表示Unicode代码点的代码单元。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
String greeting = "hello";
int n = greeting.length();
System.out.println(n);
//要想得到实际的长度,即代码点数量,可以调用
int number = greeting.codePointCount(0, greeting.length());
System.out.println(number);
//调用s.charAt(n)将返回位置n的代码单元,n介于0~s.length()-1之间
char first = greeting.charAt(0);
char last = greeting.charAt(greeting.length()-1);
System.out.println("第一个元素:"+first+"\n最后一个元素:"+last);
//要想得到第i个代码点,应使用以下语句
int index = greeting.offsetByCodePoints(0,2);
int cp = greeting.codePointAt(index);
System.out.println(cp);
块作用域
块(即复合语句)是指由一对花括号括起来的若干简单的java语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。但是不能在嵌套的两个块中声明同名的变量。