for(float x:f){}
定义了一个float类型的变量,继而将每一个f的元素赋值给x。float f[] = new float[10];
for(float x : f)
System.out.println(x);
public static void main(String[] args) {
int i = 0 ;
while(true){
i++;
int j = i*27 ;
if(j==1269)break; //跳出循环
if(i % 10 !=0)continue; //返回循环头部
System.out.println(i+"");
}
}
初始化与清理: 清理指当使用完一个资源时,需要把占用的资源释放。
当创建一个对象时,也就给此对象分配到的存储空间取一个名字。
区分重载方法:每个重载的方法都必须有一个独一无二的参数类型列表
//方法的重载
public class Tree {
int height;
Tree(){
height = 0 ;
}
Tree(int initialHeight){
height = initialHeight;
}
void info(){
System.out.println("Tree is " + height +"feet tall");
}
void info(String s){
System.out.println(s + ": Tree is" + height + "feet tall");
}
}
public class PrimitiveOverloading {
void f1(char x){System.out.println("f1(char)");}
void f1(byte x){System.out.println("f1(byte)");}
void f1(short x){System.out.println("f1(short)");}
void f1(int x){System.out.println("f1(int)");}
void f1(long x){System.out.println("f1(long)");}
void f1(float x){System.out.println("f1(float)");}
void f1(double x){System.out.println("f1(double)");}
void f2(byte x){System.out.println("f2(byte)");}
void f2(short x){System.out.println("f2(short)");}
void f2(int x){System.out.println("f2(int)");}
void f2(long x){System.out.println("f2(long)");}
void f2(float x){System.out.println("f2(float)");}
void f2(double x){System.out.println("f2(double)");}
void f3(short x){System.out.println("f3(short)");}
void f3(int x){System.out.println("f3(int)");}
void f3(long x){System.out.println("f3(long)");}
void f3(float x){System.out.println("f3(float)");}
void f3(double x){System.out.println("f3(double)");}
void f4(int x){System.out.println("f4(int)");}
void f4(long x){System.out.println("f4(long)");}
void f4(float x){System.out.println("f4(float)");}
void f4(double x){System.out.println("f4(double)");}
void f5(long x){System.out.println("f5(long)");}
void f5(float x){System.out.println("f5(float)");}
void f5(double x){System.out.println("f5(double)");}
void f6(float x){System.out.println("f6(float)");}
void f6(double x){System.out.println("f6(double)");}
void f7(double x){System.out.println("f7(double)");}
void testConstVal(){
System.out.println("5: ");
f1(5);f2(5);f3(5);f4(5);f5(5);f6(5);f7(5);
}
}
//output: 5:f1(int) f2(int) f3(int) f4(int) f5(long) f6(float)
//发现常数值5被当作int值处理,所以如果有某个重载方法接受int型参数,它就会被调用
//至于其他情况,如果传入的数据类型小于方法中声明的形式参数类型,实际数据类型就会被提升。
如果已经定义了一个构造器(无论是否有参数),编译器就不会帮你自动创建默认构造器。
this关键字只能在方法内部使用,表示对”调用方法的那个对象”的引用。
static的含义:static方法就是没有this的方法,在static方法的内部不能调用非静态方法,反过来倒是可以。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途
垃圾回收器只知道释放那些经由new分配的内存,假定你的对象(并非使用new)获得一块”特殊”的内存区域,所以它不知道该如何释放改对象的这块”特殊”内存。
只要程序没有频临存储空间用完的那一刻,对象占用的空间就总得不到释放。对象可能不被垃圾回收。垃圾回收只与内存有关。
类的每个基本类型数据成员保证都会有一个初始值。
public class InitialValues {
boolean t ;
char c ;
byte b ;
short s ;
int i ;
long l ;
float f ;
double d ;
InitialValues reference ;
void printInitialValues(){
System.out.println("Data type Initial value");
System.out.println("boolean "+t);
System.out.println("char "+c);
System.out.println("byte "+b);
System.out.println("short "+s);
System.out.println("int "+i);
System.out.println("long "+l);
System.out.println("float "+f);
System.out.println("double "+d);
System.out.println("reference "+reference);
}
}
//输出:
//boolean false
//char
//byte 0
//short 0
//int 0
//long 0
//float 0.0
//double 0.0
//reference null
初始化顺序:在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包含构造器)被调用之前得到初始化
public class Window {
Window(int marker){
System.out.println(marker);
}
}
public class House {
Window w1 = new Window(1); //第一个执行
House(){
System.out.println("House构造方法初始化");
w3 = new Window(33); //第四个执行
}
Window w2 = new Window(2); //第二个执行
void f(){
System.out.println("f()");
};
Window w3 = new Window(3); //第三个执行
}
//变量定义散布于方法之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化
public class ArrayMaker {
public static void main(String[] args) {
House h = new House();
h.f();
}
}
//显示类
public class Bowl {
Bowl(int marker){
System.out.println("Bowl("+marker+")");
}
void f1(int marker){
System.out.println("f1("+marker+")");
}
}
public class Table {
static Bowl bowl1 = new Bowl(1); //第一个执行
Table(){ //第三个执行
System.out.println("Table()");
bowl2.f1(1);
}
void f2(int marker){
System.out.println("f2("+marker+")");
}
static Bowl bowl2 = new Bowl(2); //第二个执行
}
public class Cupboard {
Bowl bowl3 = new Bowl(3); //第三个执行
static Bowl bowl4 = new Bowl(4); //第一个执行
Cupboard(){ //第四个执行
System.out.println("Cupboard");
bowl4.f1(2);
}
void f3(int marker){
System.out.println("f3("+marker+")");
}
static Bowl bowl5 = new Bowl(5); //第二个执行
}
public class ArrayMaker {
public static void main(String[] args) { //第三个执行
System.out.println("Creating new Cupboard() in main");
new Cupboard();
System.out.println("Creating new Cupboard() in main");
new Cupboard();
table.f2(1);
cupboard.f3(1);
}
static Table table = new Table(); //第一个执行
static Cupboard cupboard = new Cupboard(); //第二个执行
}
1.初始化的顺序是先静态对象(如果它们尚未因前面的对象创建过程而被初始化),而后是”非静态”对象。
public class Counter{
int i ;
Counter(){ i = 7;}
}
那么i首先会被置0,然后变成7.
2.静态初始化动作只进行一次。
public class Mugs {
Mug mug1;
Mug mug2;
{//实例初始化子句是在两个构造器之前执行
mug1 = new Mug(1);
mug2 = new Mug(2);
}
Mugs(){
}
Mugs(int i){
}
}
8.数组的初始化
在java中可以将一个数组赋值给另一个数组,其实真正做的只是复制了一个引用。
int[] a1 = {1,2,3,4,5};
int[] a2 ;
a2 = a1 ;
//例子:
public class ArrayMaker {
public static void main(String[] args) {
int[] a1 = {1,2,3,4,5};
int[] a2 ;
a2 = a1 ;
for(int i = 0 ;i1 ;
for(int i = 0 ;iout.println("a1["+i+"]=" + a1[i]);
}
}
//输出:a1[0] = 2 ..........
}
(1)int[] a :数组元素中的基本数据类型会自动初始化成空值(对于数字和字符,就是0:对于布尔值,是false)。
(2)整型包装器类Integer它是一个类而不是基本类型。
public class ArrayMaker {
public static void main(String[] args) {
Spiciness howHot = Spiciness.MEDIUM; //1.
System.out.println(howHot);
//ordinal用来表示某个特定enum常量声明顺序
for(Spicness s:Spicness.values()) //2.
System.out.println(s+",ordinal"+s.ordinal());
}
public enum Spiciness {
NOT,MILD,MEDIUM,HOT,FlAMING
}
}
2.enum在switch中的实用
public class ArrayMaker {
public static void main(String[] args) {
describe(Spiciness.NOT);
}
public enum Spiciness {
NOT, MILD, MEDIUM, HOT, FlAMING
}
//static 方法中只能调用 static 方法
public static void describe(Spiciness degree) {
switch (degree) {
case NOT:
System.out.println("NOT");
break;
case MILD:
System.out.println("MILD");
break;
default:
break;
}
}
}