java的常用引用类、数组、String类
java的常用引用类、数组、String类
1. 常用引用类
1.1 Scanner
一个简单的文本扫描器类。
使用:
//创建扫描器对象
Scanner sc = new Scanner(System.in);
//接收用户输入字符串类型的数据
String str = sc.next();
//接收用户输入整数类型的数据
int num = sc.nextInt();
//接收用户输入小数类型的数据
double d = sc.nextDouble();
Scanner sc = new Scanner(System.in);
System.out.print("请输入姓名:");
//输入姓名
String name = sc.next();
//输入年龄
System.out.println("请输入年龄 :");
int age = sc.nextInt();
//输入工资
System.out.print("请输入工资:");
double salary = sc.nextDouble();
//输出
System.out.println("姓名:"+name+",年龄:"+age+",工资:"+salary);
1.2 Random
该类的实例用于生成伪随机数的流。
使用:
//创建Random对象
Random rand = new Random();
//0~9 任意一个整数 [0,10)
int n = rand.nextInt(10);
//0.0-1.0任意一个double数[0.0,1.0)
double d =rand.nextDouble();
Random rand = new Random();
//生成0~9 任意一个
int n = rand.nextInt(10);
//生成0.0~1.0 任意一个double数
double d =rand.nextDouble();
System.out.println(n);
System.out.println(d);
1.3 Math
Math
类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。
常用值与函数:
函数 | 描述 |
Math.random | 返回0,1之间的一个随机数 |
Math.max | 求两数中最大 |
Math.min | 求两数中最小 |
Math.sqrt | 求开方 |
Math.ceil | 得到不小于某数的最大整数 |
Math.floor | 得到不大于某数的最大整数 |
Math.rint | 求距离某数最近的整数(可能比某数大,也可能比它小) |
Math.round | 同上,返回int型或者long型(上一个函数返回double型) |
Math.exp | 求e的任意次方 |
Math.log10 | 以10为底的对数 |
Math.log | 自然对数 |
Math.pow | 求某数的任意次方, 抛出ArithmeticException处理溢出异常 |
Math.PI | 记录的圆周率 |
Math.E | 记录e的常量 |
Math.abs | 求绝对值 |
Math.sin | 正弦函数 |
Math.asin | 反正弦函数 |
Math.cos | 余弦函数 |
Math.tan | 正切函数 |
Math.toDegrees | 弧度转化为角度 |
Math.toRadians | 角度转化为弧度 |
Math.IEEEremainder | 求余 |
使用: //double类型的数据,[0.0,1.0)
Math.random();
double d = Math.random();
//生成0-1的整数
double random = Math.random();
System.out.println(random);
//生成1-10的整数
int n = (int)(Math.random()*10)+1;
System.out.println(n);
2.0 数组
数组概念:可以存储一组相同类型的数据。
2.1 一维数组
语法:(1)类型[] 数组名;
(2)类型 数组名[];
静态初始化:(1)类型[] 数组名 = new 类型[]{值1,值2,…};
(2)类型[] 数组名 ;
数组名 = {值1,值2,…};
动态初始化:类型[] 数组名 = new 类型[长度];
必须要添加长度,一旦分配长度,该数组的空间是不可改变的;赋值:可以通过下标给数组赋值;元 素的个数:length可以获取数组中元素的个数
注意事项:(1)数组中下标是从0开始
(2)空指针异常:java.lang.NullPointerException
(3)索引越界异常:java.lang.ArrayIndexOutOfBoundsException
数组的操作:(1)求最大值
int array[] = new int[] {11,55,22,99,88};
//最大值
int max = array[0];
//遍历数组
for(int i=1;i<array.length;i++) {if(max<array[i]) {max=array[i];}
}
System.out.println("最大值 :"+max);
(2)最小值
int array[] = new int[] {11,55,22,99,88};
//最小值
int min = array[0];
//遍历数组
for(int i=1;i<array.length;i++) {if(min > array[i]) {min = array[i];}
}
System.out.println("最小值 :"+ min );
(3)求和
int array[] = new int[] {11,55,22,99,88};
//数组中的和
int sum = 0;
//遍历数组
for(int i=0;i<array.length;i++) {sum += array[i];
}
System.out.println("数组的和 :"+ sum );
(4)平均值
int array[] = new int[] {11,55,22,99,88};
//数组中的和
double sum = 0;
//遍历数组
for(int i=0;i<array.length;i++) {sum += array[i];
}
//平均值
double avg = sum/array.length;
System.out.println("数组的平均值 :"+ avg );
(5)复制
//旧数组
int[] array = new int[]{11.55.88.33.66.22}
//新数组
int[] newArray = new int[array.length];
//遍历旧数组
for(int i=0;i<array.length;i++) {newArray[i]=array [i];
}
(6)反转
int array[] = new int[] {11,55,22,99,88};
System.out.println("反转前:");
for(int i=0;i<array.length;i++) {System.out.print(array[i]+" ");
}
//遍历数组
for(int i=0;i<array.length/2;i++) {//交换位置array[array.length -1 -i] = array[i]^array[array.length -1 -i];array[i] = array[array.length -1 -i]^array[i];array[array.length -1 -i] = array[array.length -1 -i]^array[i];
}
System.out.println("反转后:");
for(int i=0;i<array.length;i++) {System.out.print(array[i]+" ");
}
(7)冒泡排序
int array[] = new int[] {11,55,22,99,88};
//遍历数组
for(int i=0;i<array.length -1;i++) {for(int j = 0;j < array.length - 1;j++) {if(array[j] > array[j+1]){array[j+1] = array[j+1]^array[j];array[j] = array[j+1]^array[j];array[j+1] = array[j+1]^array[j];}}
}
System.out.print("按从小到大顺序:" );
for(int i=0;i<array.length;i++) {System.out.print(array[i]+" ");
}
(8)选择排序
int array[] = new int[] {11,55,22,99,88};
//遍历数组
for(int i=0;i<array.length -1;i++) {int z = i;for(int j = i+1;j < array.length;j++) {if(array[z] > array[j]){z = j;}}if(z != i) {array[z] = array[z]^array[i];array[i] = array[z]^array[i];array[i] = array[z]^array[i];}
}
System.out.print("按从小到大顺序:" );
for(int i=0;i<array.length;i++) {System.out.print(array[i]+" ");
}
2.2 二维数组
语法:(1)类型[][] 数组名;
(2)类型 数组名[][];
静态初始化:(1)类型[][] 数组名 = new 类型[][]{{值1,值2},{值3,值4}…};
(2)类型[][] 数组名 ;
数组名 = {{值1,值2},{值3,值4}…};
动态初始化:类型[][] 数组名 = new 类型[长度1][长度2];
注意:二维数组可以看作行或列,由于数组的下标起始值为 0,因此行和列的下标需要减 1。
二维数组的操作:(1)获取单个元素
int[][] array = {{1,2},{3,4,5},{6,7,8,9}};
//打印数组的行数
System.out.println(arr.length);
//打印数组第2行的拥有的元素即列数
System.out.println(arr[1]);//打印数组第1行第2列的元素
System.out.println(arr[0][1]);
(2)获取整行元素
int[][] array = {{1,2},{3,4,5},{6,7,8,9}};
Scanner scan=new Scanner(System.in);
System.out.println("当前数组有"+array.length+"行,请输入您要查看的行数:");
int num =scan.nextInt();
for(int i=0;j<array[num-1].length;i++) {System.out.println("第"+num+"行的第["+i+"]个元素的值是:"+array[num-1][i]);
}
(3)获取整列元素
int[][] array = {{1,2},{3,4,5},{6,7,8,9}};
Scanner scan=new Scanner(System.in);
System.out.println("请输入您要获取的列:");
int num=scan.nextInt();
for(int i=0;i<array.length;i++) {System.out.println("第 "+(i+1)+" 行的第["+num+"]个元素的值是"+array[i][num]);
}
(4)遍历
int[][] array = {{1,2},{3,4,5},{6,7,8,9}};
//遍历二维数组
for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {System.out.print(arr[i][j]+" ");}
}
3 String
String类代表字符串, 字符串不变,它们的值在创建后不能被更改
StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。tringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
String s1 = "abc";
s1+="bcd"; //重新开辟空间
//synchronized
StringBuffer buf =new StringBuffer("abc");
buf.append("bcd");
//效率高
StringBuilder str = new StringBuilder("abc");
str.append("bcd"); //不会开辟新空间
System.out.println(s1); //abcbcd
System.out.println(str.toString());
//StringBuilder>StringBuffer>String 效率高到底
字符串在内存中是以字符的方式存储的。
String str = "abc";相当于: char data[] = {'a', 'b', 'c'};String str = new String(data);
字符串的比较见如下代码:
public static void main(String[] args) {String s1 = "abc";String s2 = "abc";String s3 = new String("abc");//== 地址//equals比较字符串,比较每个字符System.out.println(s1==s2); //trueSystem.out.println(s1==s3); //falseSystem.out.println(s1.equals(s3)); //trueString s4 ="ab"+"c"; //编译时确定String s5 ="ab"+ new String("c"); //运行时确定String s6 ="ab";String s7 = "c";String s8 =s6+s7;System.out.println("=======================");System.out.println("s4==s1:"+(s4==s1)); //trueSystem.out.println("s5==s1:"+(s5==s1)); //falseSystem.out.println("s8==s1:"+(s8==s1)); //false//String s9 = s8.intern(); //在常量池地址System.out.println("s9==s1:"+(s8.intern()==s1)); //trueSystem.out.println(s8.equals(s5)); //true
}
java的常用引用类、数组、String类相关推荐
- java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...
目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...
- 常用类 (六) ----- String类与字符串
相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...
- Java基础语法(九)——String类
文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...
- 【JavaSE】常用类3[String类、StringBuffer、StringBuilder]
常用类3 ①.String类 -String常用方法 -String案例演示 ②StringBuffer和StringBuilder -StringBuffer -StringBuilder -Str ...
- java 调用弗雷_JAVA API(一)String类和StringBuffer类
1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号" ...
- java str2date,java date类与string类实例代码分享
Date类用来指定日期和时间,其构造函数及常用方法如下: publicDate() 从当前时间构造日期时间对象. publicStringtoString() 转换成字符串. publiclongge ...
- abstract类_012、Java的抽象方法、接口和String类
1. 抽象方法和抽象类 ·抽象方法 使用abstract修饰的方法,没有方法体,只有声明.定义的是一种"规范",就是告诉子类必须要给抽象方法提供具体的实现. ·抽象类 包含抽象方法 ...
- java实现linkstring,【JAVA SE基础篇】32.String类入门
[JAVA SE基础篇]32.String类入门 1.字符串 1.String类又称作不可变字符序列 2.String位于java.lang包中,java程序默认导入java.lang包下所有的类 3 ...
- 在Java中使用Collator和String类进行字符串比较
Given two strings and we have to compare them using Collator and String classed in Java. 给定两个字符串,我们必 ...
最新文章
- Python的最佳学习方式
- MFC检查透镜质量程序
- vivo的android是什么手机图片,vivo iQOO配置好不好 vivo iQOO手机参数和外观图赏
- springcloud 实战 feign使用中遇到的相关问题
- Qt的元对象(Meta-Object)系统简介(转)
- Taro+react开发(60) 第三方icon使用
- python中event的用法_Python编程之event对象的用法实例分析
- 项目疑难杂症记录(四):Activity被重新创建的原因分析
- 如何才能一统编程语言的江湖?
- 我的firefox插件开发历程
- 一次数据库的简单性能优化
- 基本农田卫星地图查询_水经注万能地图下载器软件主界面功能说明
- ul1581标准_ul1581燃烧标准
- 【Linux】kibana安装与使用教程
- 微信小程序跳转公众号图文内容
- 第1-7课:基础开胃菜
- SQL语句:分组查询
- 朴素贝叶斯分类、半朴素贝叶斯分类算法
- 黄俊滔:没有人能够打败趋势,将会有大规模公司倒闭
- 华为linux改ip地址,ubuntu9.10校园网上网配置详细教程(华为h3c,mac地址绑定)