Scanner类、Math类、Random类、String类(字符串对象)
1.Math类:
数学类, java提供用来处理和计算复杂数学运算的类,Math
Math类中常见的方法:
PI // 圆周率, 属性
E // 自然常数,属性
abs(num) // 返回num值的绝对值
cbrt(a) // 开立方根
ceil(a) // 向上取整
floor(a) // 向下取整
pow(a, b) // a^b 幂次方
sqrt(a) // a的平方根
random() // 获取一个[0, 1)的随机小数
2.Random类
随机数:计算机中随机数都是伪随机数
Math.random() // 获取一个[0, 1)的随机小数
public class Three {
public static void main(String[] args) {
//获取一个0-100的随机数
int a= (int) (Math.random()*100);
System.out.println(a);
}
}
java.util.Random使用Random类需要导包
Random r = new Random([long seed]);
r.nextInt()
r.nextDouble()
……
import java.util.Random;
public class Three {
public static void main(String[] args) {
//获取一个0-100的随机数
Random r=new Random();
int a=r.nextInt(100);
System.out.println(a);
}
}
3.Scanner类
Scanner 是标准输入流,IO流
- next() // 通过空格获取字符串(单词),也可回车
- nextInt()
- nextDouble()
- hasNext()
import java.util.Scanner;
public class Three {
public static void main(String[] args) {
Scanner iu=new Scanner(System.in);//创建一个Scanner对象iu
int a=iu.nextInt();//输入一个整数
String b=iu.next();//输入一个字符串
double c=iu.nextDouble();//输入一个双精度浮点数
boolean d=iu.hasNext();//输入一个布尔值
}
}
4.String类
字符串对象(String):
java.lang.String
字符串:字符连在了一起,形成了字符串。人的肉眼可以识别分符号
在Java中,一般表现为"",引号的内部内容就是字符串
在java中,字符串是引用数据类型(对象)
字符串是一个常量,是一种不可变的数据类型
定义字符串:
第一种定义方式:
String s = "this is a woman!"; // 定义了一个字符串
第二种定义方式
new String() 获取字符串
String ss = new String(); // 等价于 String ss = "";
String sss = new String("王家豪是个大帅哥");
// 等价于 String sss = "王家豪是个大帅哥";
常见的字符串方法:
|-- charAt(i) // 获取下标对应的字符
|-- length() // 返回字符串的长度
|-- codePointAt(i) // 获取下标对应的字符的Unicode值
String s="123456";
for (int i=0;i<s.length();i++){//字符串的长度
System.out.print(s.charAt(i));//获取字符串下标对应的字符
}
System.out.println();
System.out.println(s.codePointAt(0));//获取下标对应字符的unicode
|-- concat(str) // 拼接字符串
|-- contains(str) // 查找当前字符串是否存在
|-- static copyValueOf(char[]) //返回指定数组中表示该字符序列的字符串
|-- endsWith(suffix) //判断字符串是否以指定字符串结尾
|-- startsWith(prefix) //判断字符串是否以指定字符串开头
|-- equals(str) //判断两个字符串是否相等
String a="123";
String b="45";
String c=a.concat(b);//拼接字符串
System.out.println(a.contains("1"));//查找字符在字符串中是否存在
System.out.println(c.endsWith("1"));//判断字符串是否以1结尾
System.out.println(c.startsWith("2"));//判断字符串是否以1开头
System.out.println(a.equals(b));//判断两个字符串的值是否相等
|-- equalsIgnoreCase(str) //将字符串与指定的对象比较,不考虑大小写。
|-- getByte() //得到一个操作系统默认的编码格式的字节数组
|-- indexOf(str) //返回子字符串下标
|-- lastIndexOf(str) //从尾部搜索,返回字符串下标
|-- isEmpty() //判断的是值的长度
|-- replace(oldstr, newstr) //替换字符串的子串,要写在输出语句
|-- static join(标识符, 字符串数组) //数组转字符串
|-- split(regex) //分割字符串,字符串转数组
|-- substring(index) //截取字符串
|-- substring(start, end) //靠字符串下标截取字符串
String a="a,b,c,d,e";
System.out.println(a.replace("abc","123"));//替换字符串
System.out.println(a.split(",",1));分割字符串
System.out.println(a.substring(0,2));//截取字符串
|-- toCharArray() //把字符串变成字符数组
|-- toLowerCase() //小写字母
|-- toUpperCase() //大写字母
|-- trim() //移除字符串首尾空格
|-- valueOf() //是静态方法,可以把任意基本类型或引用类型转换为字符串
String a=" abc ";
System.out.println(a.trim());//移除首位空格
System.out.println(a.toUpperCase());//大写字母
System.out.println(a.toCharArray());//把字符串变成字符数组
注意:字符串不要使用等于符号判断是否相等
在java中 == 判断的值的,不能用来判断字符串
因为字符串的创建方式有多种,不同的创建方式,地址(指针)可能不一样
基本数据类型都是可以使用 == 判断是否相等
字符串不能还是用 == 判断是否相等
字符串中 == 判断的字符串的地址
equals判断是字符串的值;
Java中数组的使用
数组:
什么是数组(Array):
数组是一种连续内存、大小固定的线性表,是一种数据结构,用来解决大量的存储问题。
为什么学习数组:数组可以解决大量数据存储问题
容器(collection):容器一般是一种数据结构,是用来解决多个数据保存和计算的容器
线性表,数组,栈,队列,链表,哈希表 ,树 ,图。
数组的特点:
1、大小固定
2、连续内存地址
3、存储的数据类型固定
4、数组是保存在堆内存中!!!因此数组是对象!!!
Java中如何定义数组
// 第一种定义方式
数据类型[] 变量名称 = new 数据类型[size];
int[] a=new int[1];
// 第二种定义方式
数据类型[] 变量名称 = new 数据类型[]{值1, 值2……};
int[] a=new int[]{1};
// 第三种定义方式
数据类型[] 变量名称 = {值1, 值2……};
int[] a={1,2,3,4,5};
数组的长度(元素的个数):
数组对象.length // 属性
访问数组元素(element):
通过下标来访问,注意:在编程中,99%情况下,下标都是从0开始
数组对象[下标] // 通过下标来访问元素的个数
修改元素的数值:
数组对象[下标] = 新值
遍历数组:
制作一个索引
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
int i = 0;
while(i < arr.length) {
System.out.println(arr[i]);
i++;
}
foreach // 循环加强,是jdk5的新特性,是一种迭代容器操作
for (数据类型 临时变量: 可迭代对象) {
System.out.println(临时变量);
}
for (int item: arr) {
System.out.println(item);
}
值传递和引用传递的区别:
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。