打包:
javac -d
表示打包
开始-->
运行-->cmd
回车-->e:
回车-->cd 2020
回车-->cd 1215
回车-->javac -d f: Test1.java
(表示把当前目录下的Test1.java
文件打包到f
盘下)
-->java -cp f: Test1(
运行f
盘下的Test1.class
文件)
在Test1.java
中首行插入package a.b.c.d;
然后在dos
中继续执行javac -d . Test1.java,
再看E:/2020A/1215
下有/a/b/c/d
,里面有个Test1.class
文件,dos
中继续执行java -cp . a.b.c.d.Test1,
则显示运行结果。不能执行cd
a-->cd b-->cd c-->cd d-->
java Test
,因为是在文件里面打的包,也就是刚才在Test.java
中写的package a.b.c.d;
在文件中这么写的只能以这种方式运行,记住就好!
在Test1.java
中首行插入package a.b.c.d;
然后在dos
中继续执行javac -d f: Test1.java,
再看f
下有a/b/c/d
,里面有个Test1.class
文件,dos
中继续执行java -cp f: a.b.c.d.Test1,
则显示运行结果。
javac -d f://a/b/c Person.java(
那么就是f
盘下有个a/b/c/d/Test1.class)
javac(
编译) -d(
表示打包)
f:(
路径,也就是说,这个包打到哪里)Test1.java(
我要编译的源文件)
-cp(
后面的字符串,表示执行的临时路径,也就是说你的.class
字节码文件所在的那个包结构下)
dos
下,cd..
表示回到上一层目录
cd 2020a/1215
表示进入1215
这个文件夹,也可以是cd 2020a/1215,
正斜杠反斜杠都行,就是不能用点,除了上面在文件中打包的特殊外!
基本数据类型的值就是地址,对象放在堆里,基本数据类型跟引用都放在栈内存里。换句话说,栈存放的就是地址,存放的就是对象!
栈是先进后出!
New
相当与指向的一根箭头!
new
等号左边的东西放在栈里,等号右边的东西放在堆里。
强制类型转换如int i=200;
byte b=(byte)i; //就是把int i 转化为byte类型的!
基本数据类型转换等级:
byte->short,char -> int -> long
float -> double
int -> float
long -> double
switch
(表达式);括号中的表达式的返回值必须是下述几种类型之一:int,
byte, char, short
;
分析以下两个类,体会值传递:
class BirthDate {
private int day;
private int month;
private int year;
public BirthDate(int d,int m,int y){
day = d; month = m; year = y;
}
public void setDay(int d) { day = d; }
public void setMonth(int m) { month = m; }
public void setYear(int y) { year = y; }
public int getDay() { return day; }
public int getMonth() { return month; }
public int getYear() { return year;}
public void display(){
System.out.println(day + " - " + month + " - " + year);
}
}
public class Example{
public static void main(String args[]){
Example ex = new Example();
int date = 9;
BirthDate d1= new BirthDate(7,7,1970);
BirthDate d2= new BirthDate(1,1,2000);
ex.change1(date);
ex.change2(d1);
ex.change3(d2);
System.out.println("date=" + date);
d1.display();
d2.display();
}
public void change1(int i){i = 1234;}
public void change2(BirthDate b){b = new BirthDate(22,2,2004);}
public void change3(BirthDate b){b.setDay(22);}
}
分析以下例子,体会先++跟后++的区别:
public class TestJiaJia
{
public static void main(String args[])
{
int i = 1;
int sum = 0;
int sum2 = 0;
sum = i++ + i++ + i++ + i++;
sum2 = ++i + ++i + ++i + ++i;
System.out.println("i++:"+sum); //输出结果为10
System.out.println("++i:"+sum2); //输出结果为30
}
}
分析以下例子,体会移位运算符的作用:
class TestYiwei{
public static void main(String args[]){
int i=2;
i=i<<2;
System.out.println(i);//输出结果为8
i=i<<2;
System.out.println(i);//输出结果为32,就是8左移两位,也就是8乘2的2次方,左移几位就乘2的几次方!右移几位就除2的几次方。
i=i>>3;
System.out.println(i);//输出结果为4,32除以8(2的3次方)得4。
}
}