多态:动物即是多态。如动物可以是: 狼、可以是:狗
封装:看不到内部结构;可以看到表面现象;
继承:直接字面理解;
Java的类:java垃圾回收机制、如不用自己释放对象。
栈内存的存储是先进先出:
堆内存的存储是先进后出:
class的构造方法:不用写返回值。
属性用类名
构造方法方法名称用类名
传参数。
package com.java1;
public class a20121223 {
int a;
int b;
public a20121223(int x, int y){
this.a=x;
this.b=y;
}
Public a20121223(){
System.out.println(“ok”);
}
Public a20121223(int a;){
This.a=a;
}
Public int abc(int a; int b;){
This.a=a;
This.b=b;
A+=a;
Return a;
}
//a20121223 p1=new a20121223();实例化对象用的。所以a20121223里的方法方法名要用类名a20121223 ;a20121223类里还有其他方法。则这些方法就要用实例后的p1.abc()这样调用,如果要返回值则要在abc方法内添加return;没有返回值则不用;
类的继承:
java:单继承多实现,也就是只能有一个extends 可以有多个implements
Public class soldier extends sole{}
就是soldier类。继承了sole类。
继承了。就可以定义里面的东西了。比如下面的父类
public class role {
private String name;
public role(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int attack(){
return 0;
}
}
子类:
public class Magicer extends role{
private int base=5;
private int leave;
public Magicer(String name){
super(name);
}
public int getBase() {
return base;
}
public void setBase(int base) {
this.base = base;
}
public int getLeave() {
return leave;
}
public void setLeave(int leave) {
this.leave = leave;
}
@Override
public int attack() {
return base*leave;
}
}
Final 关键字只能初始化一次;
Final int a=1;
a=3;//出错。
Final修饰的 变量只能够初始化一次;
Final修饰的 类不能被继承;
Final修饰的 方法子类不能覆盖;
Public static final int flag=0x55;
一般fianl与static和用;
Abstract抽象类。
abstract class Abc{
abstract void a();// 抽象方法
public void kk(){
}
}
数组:
Int array[]=new int[4];//定义
System.out.println(Arrays.toString(array));//相当于循环遍历输出整个数组。
String []datas={“华人”,”中国”};//定义
Boolean []bools=new boolean[4];//定义。
Java的api进行拷贝数组;
Int [ ] ary1={1,2,3,4,5};
Int []copy=new int[4];
Systm.arraycopy(arry1,1,copy,0,copy.length);第一是有数的数组(原数组),第二个数;是从第几个开始,第三个数是要拷贝的数组,第四个数是要拷贝数从第几个开始拷贝,第五个数是总共要拷贝多长。
相当于隔离复制。
(即非隔离复制如下)
int []ary1={1,2,3,4,5,6}
Int []ary2=ary1;
Ary2[3]=555;
//输出时ary1[3] 也会变成555
扩展数组;
char []chars={'北','京'};
char []tempchar=Arrays.copyof (chars, 5);
tempchar[2]='安';
tempchar[3]='卓';
tempchar[4]='越';
System.out.println(Arrays.toString(tempchar));
Copyof方法扩容;
增强for循环
Char []tempchar=new char[6];
for(char i:temphcar){
System.out.println(i);
}
()中的char I 为要输出的i:后面的是原有的数组;
public static int[] daoche(int[]arr){
int []a=new int[arr.length] ;
for (int i = 0; i < a.length; i++) {
//a[i]=arr[arr.length-1-i];
a[a.length-1-i]=arr[i];
}
return a;
}
// 倒序输出、
Int[]arr={1,2,3,4,5,6,7};
public static void doazhe2(int[]arr){
for (int i = 0; i < arr.length/2; i++) {
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;//这句不能忘了。忘了输出就变成{7,6,5,4,5,6,7}
}
}
自我扩容:Arr=arrays.copyof(arr,arr.length+1);
加上static不用实例化就可以调用函数。
如果没有static这要先创个**方法。才可以调用;
输出系统运行时间:
long time=System.currentTimeMillis();
System.out.println(System.currentTimeMillis()-time);
Int[][]a=new int[i][j];
a.leng为列的长度;
a.[i].leng—>为第i行的长度
</t>+:制表符;
数组排序:选择排序;冒泡排序;插入排序;
两个循环;arrays.sort(array);系统提供的排序法。
选择排序:Int temp;
For(int i=0;i<arr.length;i++){
For(int j=i+1;j<arr.length;j++){
If(arr[i]< arr[j]){
temp=arr[i];arr[i]=arr[j];arr[j]=temp;
}
}
}
冒泡排序:
for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
两两对比:
System.out.println(System.currentTimeMillis());输出系统时间。
Random r=new random();
Int aa=r.nextInt(1000);产生1到1000的随机数;
插入排序:
如果前面一个数比自己大。就将前面的一个数赋值给自己的位置
如果前面一个数比自己小。就在前面的后一位插入自己;
如果到边界值(a[0])就将自己赋值给a[0]
int j;for (int i = 1; i < arr.length; i++) {
temp = arr[i];
for (j = i - 1; j >= 0; j--) {
if (temp < arr[j]) {
arr[j + 1] = arr[j];
} else {
break;
}
}
arr[j + 1] = temp;
}
System.out.println(Arrays.toString(arr));
递归;自己调用自己:
public static int jiec(int n){
if(n==1) return 1;//当n为1的时候需要会用到jiec方法。而jiec方法的返回值是int。所以要return;
int y=jiec(n-1)*n;
return y;
}