Java基础复习(章节三)

1.Java字符串不能修改,但变量能通过引用另外一个字符串完成修改。(变量引用到另外一个字符串之后,之前的字符串将由Java自动地进行垃圾回收。)
2.检测字符串是否相等
使用equal方法检测两个字符串是否相等。
String greeting = “Hello”;
“Hello”.equal(greeting);
使用equalIsIgnoreCase方法检测两个字符串是否相等,而不区分大小写。
“Hello”.equalsIsIgnoreCase(“hello”);

==用于确定两个字符串是否在同一位置上。

char charAt(int index)
int codePointAt(int index)
int offsetByCodePoints(int startIndex,int cpCount)5.0
int compareTo(String other)
boolean endsWith(String suffix)
boolean equals(Object other)
boolean equalsIgnoreCase(String other)
int indexOf(String str)
int indexOf(String str,int fromIndex)
int indexOf(int cp)
int indexOf(int cp,int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str,int fromIndex)
int lastindexOf(int cp)
int lastindexof(int cp,int fromIndex)
int length()
int codePointCount(int startIndex,int endIndex)
String replace(CharSequence oldString, CharSequence newString)
boolean startsWith(String prefix)
boolean substring(int beginIndex)
boolean substring(int beginIndex,int endIndex)

String toLowerCase()
String toUpperCase()
String trim()

3.6.8 构建字符串
每次连接字符串,都会构建一个新的String对象,使用StringBuilder类可以避免这个问题发生。
StringBuider builder = new StringBuilder();
每次需要添加一部分时,就调用append方法。
builder.append(ch);
builder.append(str);
在需要构建字符串时就调用toString方法,可以得到一个String对象,其中包含了构建器中字符序列。。
String completedString = builder.toString();
StringBuilder类的前身是StringBuffer,其效率略有些低,但允许采用多线程的方式执行添加或删除字符串操作。如果字符串在一个单线程中编辑,则应该用StringBuilder替代它。这两个类的API是相同的。

java.lang.StringBuilder 5.0
StringBuilder
int length();
StringBuilder append(String str)
StringBuilder append(char c)
StringBuilder appendCodePoint(int cp)
void setCharAt(int i,char c)
StringBuilder insert(int offset,String str)
StringBuidler insert(int offset,Char c)
StringBuilder delete(int startIndex,int endIndex)
String toString()

输入输出

Scanner (InputStream in)
String nextLine()
String next()
int nextInt()
double nextDouble()
boolean  hasNext()
boolean hasNextDouble()

static Console console()
static char[]readPassword(String prompt,Object args)
static String readLine(String prompt,Object args)

格式化输出

文件输入与输出
想要对文件进行读取,就需要一个用File对象构造一个Scanner对象:
Scanner in = new Scanner(new File(“myfile.txt”))

中断控制流程:break,continue

大数值:如果基本的整数,浮点数不能满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInteger 实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。valueOf方法可以将普通的数值转换为大数值:
BigInteger a = valueOf(100);
遗憾的是,不能使用人们熟悉的算术运算符(如:+和*)处理大数值。而需要使用大数值中的add和multiply方法。

BigInteger add(BigInteger other)
BigInteger subtract(BigInteger other)
BigInteger multiply(BigInteger other)
BigInteger divide(BigInteger other)
BigInteger mod(BigInteger other)
返回这个大整数和另一个大整数other的和、差、积、商以及余数。
int compareTo(BigInteger other ) 如果这个整数与另一个整数大致相等,返回0,小于other,返回负数,否则,返回正数。

static BigDecimal valueOf(long x)
static BigDecimal valueOf(long x,int scale)

数组:
int []a;
int []a = new int[100]
java SE 5.0增加了一种功能很强的循环结构,可以用来依次处理数组中的每个元素而不必为指定下标值而分心。
for(variable:collection)
collection 这一集合表达式必须是一个数组或者是一个实现了Iterable接口的对象。有关这个数组列表的内容将在第五章中讨论,有关Iterable接口的内容将在卷Ⅱ的第二章讨论。

int [] smallPrimes ={2,3,5,7,11,13};
new int[]{17,19,23,29,31,37}
smallPrimes = new int[]{17,19,23,29,,31,37}
在Java中,允许数组长度为0.在编写一个结果为数组的方法时,如果碰巧结果为空,则这种语法形式就显得非常有用。此时可以创建一个长度为0的数组:new elementType[0]
注意,数组长度为0与null不同。

数组拷贝
在Java中,将一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组:
int[] luckyNumbers = smallPrimes;
lukyNumbers[5] = 12;
如果希望将一个数组的所有值拷贝到一个新数组中去,就是用Arrays类的copyOf方法:
int [] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers,luckyNumbers.length);
如果数组元素 是值类型,那么多余的元素将被赋值为0;如果数组元素是布尔型,则将赋值为false。相反,如果小于原始数组的长度,则只拷贝最前面的数据元素。
java SE6之前,用System类的arraycopy方法将一个数组的元素拷贝到另一个数组中。调用这个方法的语法格式为:
System.arraycopy(from,fromIndex,to,toIndex,count);

Java数组与C++数组在堆栈上有很大不同,但基本上与分配在堆上的数组指针一样。也就是说。

int []a=new int[100];
不同于int a[100];//C++
而等同于
int *a = new int[100]//C++

Java中的[]运算符被预定义为检查数组边界,而没有指针运算,即不能通过a加1得到数组的下一个元素。

数组排序

要想对数值型数组进行排序,可以使用Arrays类中的sort方法:
int[]a=new int[10000];
Arrays.sort(a);//这个算法使用了优化的快速排序算法。
Array类还提供了几个使用很便捷的方法,在稍后API注释中将介绍他们。

Math.random方法将返回一个0到1之间的随机浮点数。用n乘以这个浮点数,就可以得到从0到n-1之间的一个随机数。

java.util.Arrays 1.2

static String toString(type[]a)5.0
static type copyOf(type[]a,int length)6
static type copyOf(type[]a,int start,int end)6
static void sort(type[]a)
static int binarySearch(type[]a,type v)
static int binarySearch(type[]a,int start,int end,type v)6
static void fill(type[]a,type v)
static boolean equals(type[]a,type[]b)

java.lang.System 1.1

static void arraycopy(Object from ,int fromIndex,Object to,int toIndex,int Count)

多维数组
二维数组的定义与初始化
double [][]balances;
balances = new double[NYEARS][NYEARS]

不规则数组:
Java实际上没有多维数组,只有一维数组。多维数组被解释为“数组的数组”。
表达式balances[i]引用第i个子数组,也就是二维表的第i行。它本身也是一个数组,balances[i][j]引用这个数组的第j项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值