输出:
printf:可以进行格式化输出,不换行;
print:标准输出,不换行;
println:标准输出,但会换行。
标号:
在循环前放一个标号来标示该循环,那么带标示的break或者continue将对该循环起作用。
OUT:
for(int one = 0;one<=amount;++one)
{
for(int five=0;five<=amount;++five)
{
break OUT;
}
}
如上代码段所示,此时break跳出的是第一个循环而不是嵌套进入的第二个循环。
布尔类型:
boolean a = true;
定义此种类型的变量,变量值只能是true或者false
运算符的优先级:
num[].length--->代表数组num的长度;其中“.”代表一种运算表示调用。
FOR-EACH循环
int[] a= new int[5];
for(int k:a)
{
System.out.print(k+" ");
}
该循环表示k依次等于数组a中的 每一个元素。
String
String是一个类,String 的变量是对象的管理者而非所有者,
String s = new String("hello");
String s = "hello";
private:只有这个类内部可以访问
类内部指的是类的成员函数和定义初始化
这个限制是对类的而不会是针对对对象的,因此对于同一个类的不同对象是可以访问的。
this
this是成员函数的一个特殊的固有的本地变量,它表达了调用这个函数的那个变量。
本地变量与成员变量
本地变量:是定义在函数内部的变量,其作用域和生存期都是在函数内部;
成员变量:其生存期是对象的生存期,其作用域是类内部的成员函数。
构造函数:
和类名字相同的函数叫做构造函数,构造函数可以含参也可以不含参数,但是构造函数一定没有任何返回类型
对象数组中存放的是对象的地址而不是对象本身。
HashSet本质是一个集合所以其中不会有重复的元素,并且元素是无序的。
容器类
容器类有两个类型一个是容器类型,例如:ArrayList;一个是其中元素类型,例如:String.
函数的重载:
同名的两个函数,但是两个函数的参数表不同这样就是两个函数,这就叫做函数的重载。
继承:
在继承关系中父类中private的变量是不能够在子类中进行使用;解决此类问题的方案:1、将父类中的变量改为protected,这样子子类就可以使用该变量,但是这种情况要求子类与父类应该在同一个包里边,即同一个package里边;2、可以在父类中进行private变量的初始化,而后在子类中利用super(item)将该变量传递给父类,在父类里初始化之后在继承给子类。
子类与子类型:
类定义了类型;子类定义了子类型;
子类的对象可以被当作父类的对象使用:
1、赋值给父类的对象;
2、传递给需要父类对象的函数;
3、放进存放父类对象的容器中。
1、
2、
3、
String创建机制:
1、直接复制时,先在常量池中寻找是否有对应的字符串,若有,直接将引用的变量指向常量池中字符串的地址,若无,则在常量池中创建该字符串,再将其地址赋给引用变量。
2、new String(String original)创建时,先在堆中创建一个字符数组空间,然后再去常量池中寻找是否有对应的字符串,若有,则将常量池中该字符串赋给堆中的字符数组,然后将引用变量指向该数组;若无则先在变量池中创建该字符串,然后将引用变量指向该数组。
package douyin;
public class douyin {
public static final String A = "ab";
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="ab";
String a ="a";
String b = "b";
String c = a+b;
String m = "a"+"b";
String n = new String("ab");
System.out.println(A==s);
System.out.println(A==c);
System.out.println(A==s.intern());
System.out.println(A==c.intern());
System.out.println(c);
System.out.println(c.intern()==s.intern());
System.out.println(c.equals(s));
System.out.println(m==c);
System.out.println(m==s);
System.out.println(m==n);
System.out.println(A==n);
}
}
结果:true
false
true
true
ab
true
true
false
true
false
false
造型cast:
1、子类的对象可以赋值给父类的对象,但是应当注意!Java中不存在对象对对象的赋值
2、父类的对象不能赋值给子类的变量!
Vechicle v;
Car c = new Car();
v = c;//可以
c = v;//编译错误
但是将父类的对象赋值给子类的变量可以使用造型:
c = (Car) v;此处使用的就是造型。造型和类型强制转换是两个不同的东西。造型是把一个对象当作另外一种类型来看待,而不是把它改造成了另外一种类型;而类型转换是将对象改造成了另外一种类型,例如浮点型的10.2在进行类型转换时:(int)10.2,在这之后10.2被改造成了10。
函数调用的绑定:(所谓的多态就是通过一个变量去调用一个函数)
当通过对象变量点用函数的时候,调用那个函数这件事情叫做绑定
静态绑定:根据变量的声明类型来决定
动态绑定:根据变量的动态类型来决定
在成员函数中调用其他成员函数也是通过this这个对象变量来调用的,这也是一种动态绑定。
覆盖override:
子类和父类中存在名称和参数表完全相同的函数,这一对函数构成覆盖关系。
通过父类的变量调用存在覆盖关系的函数时,会调用变量当时所管理的对象所属的类的函数。
抽象
抽象函数:表达概念而无法实现具体代码的函数。
抽象类:表达概念而无法构造出实体的类。
带有abstract修饰符的函数,有抽象函数的类一定是抽象类,抽象类不能制造对象,但是可以定义变量。
接口
接口是纯抽象的类,所有的成员函数都是抽象函数;所有的成员变量都是public static final。
接口规定了长什么样,但不管里面是什么。
interface是一种特殊的class。
接口用implements,类可以实现很多接口,接口可以继承接口,但不能继承类,接口不能实现接口。
设计程序时先定义接口,在实现类;任何需要在函数间传入传出的一定是接口而不是具体的类;
内部类
定义在别的类内部、函数内部的类,内部类能直接访问外部的全部资源,包含任何的私有的成员,外部是函数时,只能访问那个函数里final的变量。
匿名类:在new对象的时候给出的类的定义形成了匿名类,匿名类可以继承某类,也可以实现某接口,Swing的消息机制广泛使用匿名类。
注入反转
由按钮公布一个守听者接口和一对注册/注销函数,你的代码实现那个接口,将守听者对象注册在这个按钮上,一旦按钮被按下,就会反过来调用你的守听者对象的某个函数。
JTable:用JTable类可以以表格的形式显示和编辑数据。JTable类的对象并不存储数据,它只是数据的表现。
类的方法必须加上static,而实例方法则不用。
当一个类创建了一个对象后,这个对象就可以调用该类的方法。当类的子节码又件被加载到内存
时,类的实例方法不会被分配入口地址,当该类创建对象后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。
Format方法
format()用于格式化方法,即用于字符串和变量的显示效果,例如:
a="{1}说他写完作业了,但{0}不相信他".formate("老师","张三");
print(a); //张三说他写完了作业,但老师不相信他
有参数序号按照序号使用,没有参数序号则按照顺序使用。注意序号从0开始。
例:
a="{:-^25}".format('小红迟到了');
print(a);
//----------小红迟到了----------
Length与Length()的区别
length是属性,一般集合类对象拥有的属性。取得集合的大小,例如数组,可以知道数组的长度。
length()是方法,一般字符串类对象有该方法,可以取得字符串的长度。