Java-Day02
一维数组
1.声明数组 int[ ] a; //声明数组时不规定数组长度
2.分配空间 a = new int[5]; //分配空间: 告诉计算机分配几个连续的空间。eg:scores = new int[30]; avgAge= new int[6]; name = new String[30];
3.赋值 a [0] = 8; //向分配的格子里放数据scores[0] = 89;scores[1] = 79;
4.处理数据 a [0] = a[0] * 10;
//声明一个变量就是在内存空间划出一块合适的空间
//声明一个数组就是在内存空间划出一串连续的空间
数组赋值:
方法1: 边声明边赋值 //创建数组并赋值的方式必须在一条语句中完成
char 类型数组
char[] arry5 = {'c','a'};
string 类型数组
String[] strArray = {"Hello", "World", "Java", "Programming", "Language"};
int类型数组
int [ ] scores = {60, 80, 90, 70, 85};
浮点型
float[] str1 = {}
double[] arry4 = {19.1567,18.15673};
方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(inti = 0; i < 30; i ++){
scores[i] = input.nextInt();
}
Arrays类
Arrays类提供操作数组的方法,如:排序、查询
import java.util.Arrays;
Arrays类的sort()方法: 对数组进行升序排列
Arrays.sort(数组名);
eg:
int[] score = {60,80,90,70,85};
Arrays.sort(score);
for (int i=0;i<score.length;i++){
System.out.print(score[i]+"\t");
}
输出: 60 70 80 85 90
二维及多维数组
定义
//一步写出来多维数组的定义
int [ ][ ] scores = new int[5][50];
//分步写出来多维数组的定义
int [ ][ ] scores; //定义二维数组
scores=new int[5][50]; //分配内存空间
赋值
int[][] scores=new int[][]{ { 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 }};
or
int scores[][] = {{ 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 } };
//二维数组实际上是一个以一维数组做为元素的一维数组,因此,第一个[]代表的是有多少个一维数组,第二个[]代表的是每个一维数组中有多少个元素;说白了第一个[]代表行,第二个[]代表列
eg:int [ ][ ] s = new int[3][4];
s[3][4] = s[0][0] s[0][1] s[0][2] s[0][3]
s[1][0] s[1][1] s[1][2] s[1][3]
s[2][0] s[2][1] s[2][2] s[2][3]
类和对象
类:具有相同属性和方法的一组对象的集合;类是对象的抽象,对象是类的具体;
对象的属性和方法对象:用来描述客观事物的一个实体,由一组属性和方法构成对象的属性和方法
//属性(名词)
/**
方法(动词)
方法 定义 某种行为(或功能)
eg: public void show(){
System.out.println("姓名:" + name + ",密码:" + password);}
*/
方法
调用方法前一定要实例化,再调用
Tour_ticket tt = new Tour_ticket();
String message = tt.ticket(use_name,use_age);
1.如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该值的类型;返回值只能有一个
public class Student{
String name = "张三";
public String getName(){
return name;
}
}
2.如果方法没有返回值,返回值类型为void
public void Teach(){
System.out.println("王老师在教课!!");
}
tips:方法名 命名规则
(1)驼峰命名规则(2)有意义
方法之间允许相互调用,不需要知道方法的具体实现,实现重用,提高效率
public class Student1 {
public voida() {b();} //调用Student2 的b方法b()}
}
public class Student2 {
b();
}
String字符串
字符串的写法和定义
String s = "Hello World";
String s = new String();
String s =new String("Hello World");
常用函数和方法:
1.字符串的长度,length()方法:返回字符串中的字符数
String s = "123123";
System.out.println(s.length()); //结果6
2.比较字符串,equals()方法:比较存储在两个字符串对象的内容是否一致
String S="TOM"
if(S == uname.equals("TOM")){
System.out.println("S和"+"TOM字符一致");
}
str1==str2 和 equals()方法的区别:
前者会比较两个字符串在内存中的首地址,即判断是否是同一个字符串对象
而equals()方法仅仅检查 组成字符串 内容 的字符是否完全一致
equalsignorecase() 方法用于比较两个字符串,忽略大小写,两个字符串相等,则返回 true;否则返回 false
toLowerCase()将字符串中的所有字符转换为小写
String str = "Hello, World!";
String lowerCaseStr = str.toLowerCase();
System.out.println(lowerCaseStr); //输出hello, world!
toUpperCase() 用于将字符串转换为大写
3.提取字符串
//常用提取方法indexOf,lastIndexOf,substring
搜索第一个出现的字符ch(或字符串value)
public int indexOf(intch)
public int indexOf(String value)
String str = "Hello, World!";
int index = str.indexOf('o'); // 查找字符'o'的位置,如果不存在值为-1
System.out.println("第一次出现 'o' 的位置是: " + index); //输出 4
搜索最后一个出现的字符ch(或字符串value)
public int lastIndexOf(intch)
public int lastIndexOf(String value)
//substring()方法用于从字符串中提取子字符串
public String substring(intindex) //截取从intindex后的所有字符
public String substring(int beginindex,int endindex)//提取beginindex开始 位置;endindex结束位置;
String str = "Hello, Java!";
String result = str.substring(7); // 输出7以后的字符: "Java!"
String subStr2 = str.substring(0, 5); // 输出: "Hello"
public String trim()//用于去除字符串首尾的空白字符,包括空格、制表符、换行 符等
String str = " Hello World ";
String trimmedStr = str.trim();
System.out.println(trimmedStr); // 输出: Hello World
4.拼接字符串concat()函数
String str1 = "Hello";
String str2 = "World";
String result = str1.concat(str2); //结果为 "HelloWorld"。
5.拆分字符串
split()方法:将一个字符串分割为子字符串,结果作为字符串数组返回
String words="长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山";
String[] printword=new String[100] //把words按照空格分成多个元素放进数组中去
printword=words.split(" ");
StringBuffer:String增强版
对字符串频繁修改时,使用StringBuffer.
String 和 StringBuffer 的区别:
String 是不可变的,一旦创建了一个 String 对象,就不能更改它的内容。 每次对 String 进行修改操作,都会创建一个新的 String 对象。频繁修改字符 串内容的情况下,可能会导致性能问题
StringBuffer 是可变的,StringBuffer 允许你修改其内容而不创建新的对 象。在需要频繁修改字符串时,提高字符串操作的性能。StringBuffer 提供了 一系列方法来修改和操作字符串,例如 append()、 insert()、 delete() 等, 这些方法都允许在原始字符串上进行操作而不创建新的对象。
创建一个StringBuffer
StringBuffer sb = new StringBuffer(); //创建空StringBuffer对象
StringBuffer sb = new StringBuffer("aaa"); //创建一个变量存储字符串aaa
函数:
sb.toString(); //转化为String类型
sb.append("**"); //追加字符串
sb.insert(1,"**"); //插入字符串,插入位置的字符向后移动