??xml version="1.0" encoding="utf-8" standalone="yes"?>
(tng)
class 长方?{
(tng) (tng) (tng) (tng)int ?/span>;int ?/span>;
(tng) (tng) (tng) (tng)int 周长()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)return 2*(?/span>+?/span>);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)int 面积()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)return ?/span>*?/span>;
(tng) (tng) (tng) (tng)} (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)长方?chang1=new 长方?);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)长方?chang2=new 长方?);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)chang1.?/span>=10;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)chang1.?/span>=5;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("周长="+chang1.周长());
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("面积="+chang1.面积());
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)chang2.?/span>=20;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)chang2.?/span>=8;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("周长="+chang2.周长());
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("面积="+chang2.面积());
(tng) (tng) (tng) (tng)}
}
{
(tng) (tng) (tng) (tng)int height;
(tng) (tng) (tng) (tng)int weight;
(tng) (tng) (tng) (tng)void animal()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("Animal constract");
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void eat()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("Animal eat");
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void sleep()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("Animal sleep");
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void breathe()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("Animal breathe");
(tng) (tng) (tng) (tng)}
}
/*
* 理解l承是理解面向对象程序设计的关键
* 在java中,通过关键字extendsl承一个已有的c,被承的cȝ为父c(类Q基c)(j)Q新的类UCؓ(f)子类Q派生类Q?/span>
* * 在java中,不允许多l承
*/
class Fish extends Animal
{
(tng) (tng) (tng) (tng)void fish()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("fish constract");
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void breathe()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)//super.breathe();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)//super.height=40;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println("fish boo");
(tng) (tng) (tng) (tng)}
}
class Integration
{
(tng) (tng) (tng) (tng)public static void main(String[]args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)//Animal an=new Animal();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)Fish fh=new Fish();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)//an.breathe();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)//fh.height=30;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)fh.breathe();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng)}
}
/*
*在子cd中定义一个与父类同名Q返回类型,参数cd均一致的Ҏ(gu)Q称为方法的覆盖
*Ҏ(gu)的覆盖发生在子类和父cM间?/span>
*调用父类的方法用super
*/
/*Ҏ(gu)变量superQ提供了(jin)父类的访?/span>
* 可以使用super讉K被父c被子类隐藏的变量或覆盖的方?/span>
* 每个子类构造方法的W一句,都是隐藏的调用superQ)(j)Q如果父cL有这UŞ式的构造函敎ͼ那么在编译器中就?x)报错?/span>
*
*
*
*/
?rn)态方法和?rn)态变量的引用直接通过cd引用?
在静(rn)态方法中不能调用非静(rn)态的Ҏ(gu)和引用非?rn)态的成员变量。反之,则可以?
可以用类的对象obj去调用静(rn)态的Ҏ(gu)methodQ)(j)Q如Qobj.method()?
(tng)
Final在声明时需要进行初始化?
使用关键字final定义帔RQ例如:(x)final double PI=3.1415926
作ؓ(f)一U约定,在定义常量时Q通常采用大写的Ş式?
Final帔R可以在声明的同时赋初|也可以在构造函C赋初倹{?
Z(jin)节省内存Q我们通常常量声明ؓ(f)?rn)态的QstaticQ?
(tng)
在声明ؓ(f)staticӞp在声明final帔R时进行初始化?
static final double //PI=3.1415926;
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)point(int a,int b)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)PI=3.1415926;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)x=a;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)y=b;
(tng) (tng) (tng) (tng)}
q种方式是错误的?
正确的方法如下:(x)
static final double PI=3.1415926;
(tng)
public class point
{
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)point(int a,int b)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)x=a;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)y=b;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)point()
(tng) (tng) (tng) (tng){ (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void output()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng)System.out.println(x);
(tng) (tng) (tng) (tng)System.out.println(y);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void output(int x,int y)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)this.x=x;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)this.y=y;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)point pt;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)/*pt=new point();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}*/
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt=new point(3,3);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output(5,5);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)}
}
当类中有2个同名变量,一个属于类Q类的成员变量)(j)Q而另一个属于某个特定的Ҏ(gu)Q方法中的局部变量)(j)Q用this区分成员变量和局部变量?
使用this化构造函数的调用?
public class point
{
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)point(int a,int b)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)x=a;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)y=b;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)point()
(tng) (tng) (tng) (tng){ (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)this(1,1);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void output()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng)System.out.println(x);
(tng) (tng) (tng) (tng)System.out.println(y);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void output(int x,int y)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)this.x=x;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)this.y=y;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)point pt;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt=new point();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output();
(tng) (tng) (tng) (tng)}
}
我们使用一个不带参数的构造方法来调用带参数的构造方法,在不带参数的构造方法中使用this(1,1);this本n表示pt对象Q他调用带参数的成员Ҏ(gu)Q来lx和y赋倹{大大简化了(jin)调用Ҏ(gu)?
在一个类中所有的实例Q对象)(j)调用的成员方法在内存中只有一份拷贝,管在内存中可能有多个对象,而数据成员(实例变量Q成员变量)(j)在类的每个对象所在的内存中都存在着一份拷贝。This变量允许相同的实例方法ؓ(f)不同的对象工作。每当调用一个实例方法时Qthis变量被讄成引用该实例Ҏ(gu)的特定的cd象。方法的代码接着?x)与this所代表的对象的特定数据建立兌?
cd有状态和行ؓ(f)的方式?
状态就像hq个cȝ状态有w高和体重,行ؓ(f)有吃饭这个行为?
下面用一个点来说?
public class point
{
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)void output()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng)System.out.println(x);
(tng) (tng) (tng) (tng)System.out.println(y);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)point pt;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt=new point();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.x=10;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.y=10;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)}
}
构造函敎ͼ构造函数和cȝҎ(gu)cM。构造方法的名字和类名相同,q且没有q回|构造方法主要ؓ(f)cȝ对象定义初始化状态?
我们不能直接调用构造函敎ͼ只能通过new关键字来调用从而创建类的实?
Java的类都要求有构造方法,如果没有定义构造方法,则java?x)默认用一个缺省的Ҏ(gu)Q就是不带参数的Ҏ(gu)?
public class point
{
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)point()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)x=5;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)y=10;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void output()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng)System.out.println(x);
(tng) (tng) (tng) (tng)System.out.println(y);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)point pt;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt=new point();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)}
}
对于构造方法,q可以用参数的Ҏ(gu)Q在实例化对象的时候,直接传递参数就可以?
public class point
{
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)point(int a,int b)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)x=a;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)y=b;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void output()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng)System.out.println(x);
(tng) (tng) (tng) (tng)System.out.println(y);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)point pt;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt=new point(3,3);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)}
}
New关键字的作用
为对象分配内存空间?
引v对象构造方法的调用?
为对象返回一个引用?
(tng)
各种数据cd的默认值是Q?
数值型Q? 0
BooleanQ? false
CharQ? "\0"
对象Q? null
(tng)
public class point
{
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)point(int a,int b)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)x=a;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)y=b;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)void output()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng)System.out.println(x);
(tng) (tng) (tng) (tng)System.out.println(y);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)point pt;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt=new point(3,3);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)}
}
输出? 0
带参数的构造方法和不带参数的构造方法可以同时用。只要参数类型或参数个数不同。在调用是是通过Ҏ(gu)定参数类型和参数个数的方法来调用哪个构造方法?
(tng)
(tng)
q就是方法的重蝲QoverloadQ:(x)重蝲构成的条Ӟ(x)Ҏ(gu)的名U相同,但参数类型或参数个数不同Q才能构成方法的重蝲?
public class point
{
(tng) (tng) (tng) (tng)int x,y;
(tng) (tng) (tng) (tng)point(int a,int b)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)x=a;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)y=b;
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)point()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng)void output()
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng)System.out.println(x);
(tng) (tng) (tng) (tng)System.out.println(y);
(tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)public static void main(String[] args)
(tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)point pt;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt=new point();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)/*pt=new point(3,3);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)pt.output();
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}*/
(tng) (tng) (tng) (tng)}
}
q?U方法都是可以用的?/span>
左移Q? <<
带符号右U:(x)>>
无符号右U:(x)>>>
? x x<<2 x>>2 x>>>2
17 00010001 01000100 00000100 00000100
-17 11101111 10111100 11111011 00111011
看一下程?x表示16q制。ffffffff表示-1
public class test {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=0xffffffff;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int c=i<<2;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(i);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(c);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
输出?1?4.q表C?
public class test {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=0xffffffff;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int c=i<<2;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toHexString(i));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toHexString(c));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
使用Integer.toHexString()?0q制转换?6q制?
输出?span style="color:black; font-family:宋体; font-size:10pt">ffffffff 和fffffffc左移2位最后补2?Q最后的1100转换?6q制是c
(tng)
public class test {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=0xffffffff;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int c=i>>>2;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toHexString(i));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toHexString(c));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
无符号右U输出是ffffffff?fffffff 右移2位后最左段?011Q{换位16q制是3
(tng)
l习(fn)Q?
一个整?10从右端开始的4?位变?.
{?要想??位变?Q先构造一??位是0的数Q然后用110和这个数?amp;。Q何数?与都?Q就完成?jin)Q务。要构造一??位是0的数Q先构造一个低4位是1的数15Q然后将它左U?位,然后取反Q就构造成4?位是0的数?jin)。程序如下?
public class test {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=15;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int j=i<<3;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int c=~j;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int k=110;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int l=k&c;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toBinaryString(i));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toBinaryString(j));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toBinaryString(c));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toBinaryString(k));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(Integer.toBinaryString(l));
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
输出?
00001111
01111000
10000111
01101110
00000110
(tng)
一个数左移一位等于是数*2Q右UM位相当于数/2?
左移2位相当与乘两?Q右U?位相当与除两?.
01101101
&
00110111
00100101
| 按位? 只要1个真qQ都假才?
01101101
|
00110111
01111111
^按位异或 一真一假才为真Q都真都假就是假?
01101101
^
00110111
01011010
~按位取反 0?Q??
~01101101
10010010
计算Z有原码,反码Q和补码?
原码
最高ؓ(f)作ؓ(f)W号?正,1负。其余各位表C数值的l对倹{?
+7的原码是 00000111
-7的原码是 10000111
原码的问题是+0?0的表C?
+0?0000000
-0? 10000000
2个数g同?
反码
一个数如果为正Q则它的反码与原码相同,如果Q则W号位ؓ(f)1Q其余取反?
+7?0000111
-7 ?11111000
反码的问题也?0?0的问?
+0?00000000
-0 ?11111111
2个数g同?
补码
利用溢出Q我们将减法变成加法?一个数如十q制Q一个字节一个数Q有8位,过p一?
一个数为正Q则它的原码Q反码,补码相同。如果ؓ(f)负,则符号位?Q其余对原码取反。然后加1
+7?00000111
-7? 11111001
+0?0000000
-0?00000000Q然后丢掉最高的9位则?0000000
?0的表C相同,所以计机中是采用的是补码?
已知一个负数的补码Q{换ؓ(f)十进制?
?11111010 先取?
00000101 转换为十q制
? 加上负号
?5 再减?
?6
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)for(int i=0;i<10;i++)
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng){System.out.println(i);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
(tng) (tng) (tng) (tng)}
}
对于java中for语句中定义的变量的作用域只在{}内。For以外不能讉K。这点和c语言不同Q知道就可以?jin)?
public class Welcome {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=3;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(i++);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
输出?
++i是先+1Q然后参与运?
public class Welcome {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=3;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(++i);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
输出?
下面q个例子说明?jin)这个道?
public class Welcome {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=3;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int count=(i++)+(i++)+(i++);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(i);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(count);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
输出??2Qi取了(jin)3ơ是6Qcount?+4+5=12
public class Welcome {
(tng) (tng) (tng) (tng)public static void main(String[] args) {
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int i=3;
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)int count=(++i)+(++i)+(++i);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(i);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(count);
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
}
输出??5Qi取了(jin)3ơ是6Qcount?+5+6=15