If(arr[i]==arr[j]){
Count++
Break;
}
}
}
Booleanflag=false:
当前元素是否为重复元素,默认不是重复元素
If(newArr[J]==temp){//是重复元素
Flag=true;
Break;
}
//不是重复元素,把该元素存储到新数组中
If(flag==false){
NewArr[index]=temp;
}
ClassUser{
StringuserName;
Stringpassword;
}
User[]users=newUser[10]
Stringpassword=scanner.next()
Object是所有类的终极父类
hashCode()哈希码对象的内存地址
String(byte[]bytes,intoffset,intlength)bytes要解码的数组offset数组中那个索引值开始解码
Str.charAt(3)
String[]arr=str.split(“-”)
Arrays.toString(arr)
Str.subString
(2)
Str.subString(2,4)
Char[]arr=str.toCharArray()转换为字符数组
Intindex=Path.lastIndexOf(“\\”)
Path.substring(index+1)
翻转reverse(str)
子串在父串中出现的次数
Str.indexOf(target,fromIndex))!
=-1
字符串是常量,在值创建之后不改变
stringBuffer存储字符的容器底层依赖一个字符数组,
Sb.append(“java”)
Sb.insert(2,”小明”)
Ab.replace(2,4,“陈小狗”)
Sb.ensurreCapacity(20)
toString()字符缓冲类的内容转换成字符串返回。
StringBuffer与StringBuilder两个类都是字符串缓冲类
两个类的方法都是一致的
StringBuffer是线程安全的。
StringBuilder是线程不安全的
Arraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)
Src原数组srcPos原数组的起始位置dest目标数组destPos目标数组的起始位置
Length复制数组元素的数量
014160
Runtimeruntime=Runtime.getRuntime()
Runtime.exec(“C:
\\Windows\\notepad.exe”)
Calendarcalendar=Calendar.getInstance();
Claendar.get(Calendar.YEAR)
Calendar.get(Calendar.MONTH)+1
DATE
HOUR_OF_DAY
MINUTE
SECOND
Datedate=newDate()
SimpleDateFormatdateFormat=newSimpleDateFormat(“yyyy年MM月dd日HH:
mm:
ss”);
Time=DateFormat.format(date)
Abs(-3)
Ceil(-3.14)
Math.floor(-3.14)
Random.nextInt(10)+11-10
nextInt(11)1-10
StringBulider存储字符的容器
For(inti=0;i<4;i++){
Intindex=randome.nectInt(arr.length)
Sb.append(arr[index])
}
Syso(sb)
进程负责控件的划分
线程负责代码的执行,就是一个执行路径
ClassDemoextendsThread{
Publicvoidrun(){
Super.run()//自定义的任务代码就写在run方法中,自定义线程负责run方法中的代码
}
}
Main所有代码都是由主线程执行的
Demod=newDemo()
D.run();
D.start()
Run方法不能直接调用相当于调用一个普通方法并没有开启线程
New线程创建不具有执行功能
Start进入可运行状态,获得cpu执行权,具备cpu的等待资格
Sleep进入临时阻塞状态,线程一旦超过了指定的睡眠时间就重写进入可运行状态。
调用wait进入临时阻塞状态,需要其他线程唤醒该线程才可以重写进入可运行状态。
Yield暂停当前正在执行的线程对象,并执行其他线程
StaticIntnum=50;非静态的成员变量数据是在每一个对象中都会维护一个数据的
ClassSaleTicketextendsThread{
Staticintnum=50;
PublicSaleTicket(Stringname){
Super(name);
}
}
Publicvoidrun(){
While(true){
If(num>0){
Syso(Thread.currentThread().getName()+””num)
Num--;
Thread.sleep(100)
}
}
}
线程同步块
Sunchronized(o){
需要被同步的代码;
}
StaticObjecto=newObject();
PublicclassDemoimplementsRunnable{
}
Demod=newDemo()
Threadthread=newThread(d,””)
Thread.start()
SaleTicketsaleTicket=newSaleTicket()
Treadthread=newThread(saleTicked.”窗口”)
线程通信生产者与消费者
Productp=newProduct()
Producerpriducer=newProducer(p)
Producer.start()
Wait方法与notify方法必须要同步代码块或者同步函数才能使用
Wait方法与notify方法必须由锁对象调用。
Booleanflag=false;
Synchronized(p){
If(p.flag==false){//消费者p.flag==true
If(){
P.flag=true;
I++;
P.notify()
}
Interrupt无法停止一个线程
}else{
P.wait()
}
}
一个进程中只剩下守护线程,守护线程也会死亡。
D.setDaemon(true)
Join方法加入必须让步给新加入的线程新完成任
Sons=newSon()
S.start()
S.join()
List有序可重复
Set无序不可重复
Collectionc=newArrayList()
C.add()
C.clear()
C.remove(o)
C.RetainAll(c2)保留c集合于c2集合的交集元素
C,contains(“”)
Object[]arr=c.toArray()//把集合中的元素全部存储到Object的数组中返回
Array.length
Arr[i]
List有序可重复set无序不可重复
Object[]arr=c.toArray()把集合元素存储到一个object数组中
Iteratorit=c.iterator()
hasNext()是否有下个元素,如果有元素可以便利,返回true
Next()获取元素
Collectionusers=newArrayList()
Users.add(“账号”)
While(true){
Intid=scanner.nextInt()
}
Iteratorit=users.iterator();
Outer:
While(it.hasNext){
Useruser=(User)it.next()
If(user.id==id)
Break;
}else{
Breakouter;
}
Useruser=newUser(id,null)
If(users.contains(user))
User.setPassword(password)
Users.addd(user)
BooleanisLogin=false;
List.addAll(2,list2)list2的元素添加到list集合指定索引位置上
List.get(i)
List.indexOf(“本山”)
List.subList(fromIndex,toIndex)//指定开始于结束的索引值截取集合中的元素
hasPrevious()判断是否存在上一个元素
Previous获取上一个元素
Next()先取出当前指针指向的元素,然后指针向移动一个单位
It.next()
Add(Ee)把当前元素插画入道当前指针指向的位置
Set(Ee)替换迭代器最后一次返回的元素
正序it.hasNext()it.next()
逆序
It.hasPrevious()it.previous()
ArrayList底层是维护了一个Obj