语法:
public enum 变量名{
值一,值二······}
某个变量的取值范围只能是有限个数的值时,就可以把这个变量定义成枚举类型。
装箱(boxing): 把基本数据类型变成引用类型
拆箱(unboxing):把引用类型变成基本数据类型
int i = 1;
Integer o = i ;//自动装箱(在1.6版本之前是错误的)
int i = 1;
Integer o = new Integer(i);//手工装箱(在1.6版本之前的标准写法)
Integer o = 10;//自动装箱(在1.6版本之前是错误的)
int i = o; //自动拆箱(在1.6版本之前是错误的)
在1.6版本之前必须这么去做:
Integer o = new Integer(10);//手工装箱
int i = o.intValue(); //手工拆箱
每一个基本数据类型都有对应的包装类
包装类 | 基本数据类 |
---|---|
Boolean | booolean |
Byte | byte |
Integer | int |
Short | short |
Long | long |
Float | float |
Double | double |
Character | char |
字符串类型和包装类(基本数据类型)的转换
int i = 10;
String s = i + "";
//String s = String.valueOf(i);
//String s = new String("a");
int j = Integer.parseInt(s);
double d = Double.parseDouble(s);
Math
类是Java中提供的一个数学工具类,用于执行常见的数学运算。它提供了许多静态方法,可以用于执行数值计算和数学操作。下面是Math
类的一些常用方法:
abs(x)
:返回参数x的绝对值。例如:Math.abs(-5)
的结果是5。max(x, y)
:返回x和y中较大的值。例如:Math.max(3, 7)
的结果是7。min(x, y)
:返回x和y中较小的值。例如:Math.min(3, 7)
的结果是3。ceil(x)
:返回大于或等于参数x的最小整数。例如:Math.ceil(5.3)
的结果是6。floor(x)
:返回小于或等于参数x的最大整数。例如:Math.floor(5.7)
的结果是5。round(x)
:返回参数x的四舍五入值。例如:Math.round(5.5)
的结果是6。exp(x)
:返回参数x的指数值。例如:Math.exp(2)
的结果是7.38905609893065,这是e的平方。log(x)
:返回参数x的自然对数(以e为底)。例如:Math.log(10)
的结果是2.302585092994046,表示10的自然对数。pow(x, y)
:返回x的y次方。例如:Math.pow(2, 3)
的结果是8,表示2的3次方。sqrt(x)
:返回参数x的平方根。例如:Math.sqrt(25)
的结果是5。sin(x)
:返回参数x的正弦值。例如:Math.sin(Math.PI/2)
的结果是1,表示π/2的正弦值。cos(x)
:返回参数x的余弦值。例如:Math.cos(Math.PI)
的结果是-1,表示π的余弦值。tan(x)
:返回参数x的正切值。例如:Math.tan(0)
的结果是0,表示0的正切值。random()
:返回一个[0, 1)范围内的随机浮点数。例如:Math.random()
的结果可能是0.678987654321。这只是Math
类提供的一小部分方法,还有其他方法可以用于其他类型的数学运算。要使用Math
类的方法,
获取伪随机数
Random ran = new Random();
int i = ran.nextInt(10);
System.out.println(i);
字符串:不可变的字符序列
StringBuffer s = new StringBuffer();
s.append("a");
s.append("b");
s.append("c");
s.append("d");
System.out.println(s.toString());
StringBuilder s1 = new StringBuilder();
s1.append("a");
s1.append("b");
s1.append("c");
s1.append("d");
System.out.println(s1.toString());
//StringBuffer 是线程安全的,性能比StringBuilder低
//StringBuilder是线程不安全的
public static void main(String[] args) {
String s = " adEb cde ";
// 获取字符串的长度
// System.out.println(s.length());
// 获取指定位置的字符
// System.out.println(s.charAt(2));
// 将指定字符串连接到原字符串末尾
// System.out.println(s.concat("d"));
// 判断字符串是否包含指定字符序列
// System.out.println(s.contains("ac"));
// 判断字符串是否以指定字符序列结尾
// System.out.println(s.endsWith("de"));
// 返回指定字符在字符串中第一次出现的位置
// 如果找不到,则返回-1
// System.out.println(s.indexOf('f'));
/* 返回指定字符序列在字符串中第一次出现的位置
* System.out.println(s.indexOf("de")); // 11
* System.out.println(s.lastIndexOf("de")); // 5
*/
// 判断字符串是否为空
// System.out.println(s.isEmpty());
// 将字符串中指定字符序列替换为新的字符序列
// System.out.println(s.replace("de","xy"));
// 根据指定的分隔符将字符串拆分为字符串数组
// 返回一个数组
// System.out.println(s.split("d"));
/* 使用分隔符将字符串拆分为字符串数组,并逐个打印数组元素
* for (String o : s.split("d")) {
* System.out.println(o);
* }
*/
// 判断字符串是否以指定字符序列开头
// System.out.println(s.startsWith("a"));
// 截取子串:从索引0开始截取到索引5(包括索引0位置,不包括索引5位置)
// System.out.println(s.substring(0,5));
// 将字符串转换为字符数组
// char[] arr = s.toCharArray();
// 将字符串转换为小写字母
// System.out.println(s.toLowerCase());
// 将字符串转换为大写字母
// System.out.println(s.toUpperCase());
/* 输出带有前后空格的字符串
* System.out.println("|" + s + "|");
* 输出去除前后空格的字符串
* System.out.println("|" + s.trim() + "|");
*/
// 将其他类型转换为字符串
// String s1 = String.valueOf(123);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String s = input.next();
System.out.print("请输入要查找的字符:");
String ch = input.next();
int count = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (ch.equals(c + "")) {
count++;
}
}
System.out.println(s + "中包含" + count + "个" + ch);
}