重新复习的JAVA基础(浅出)!留着慢慢看。。

一些基本的流程控制语句就不写了。。直接从对象开始刚!

首先:类和对象!

如何描述类,类具有一定的属性和行为。行为==方法 (比如人会跑,跑就是方法)     |        属性 = 描述人的内容(身高,体重等)!

这个时候有了类之后,就要想如何产生实体了,有了人类还不够,还必须要有 个人 ,人就是人类的具体个体。而且每个实体的行为和属性都不定。


函数在内存中的运行:我们用一个main方法调用add方法来举例子!首先main 函数进内存,进了内存之后再加载了一个名字叫sum的属性。

这个时候add方法再进内存,加载了两个形式参数属性,计算从调用者方传来的两个参数的值,然后把结果return(返回)给调用者。当这个值返回完成时,

add方法就会弹出内存,用于运算的内存叫做栈!进内存叫压栈(进栈),出内存叫弹栈。这个时候add弹栈(出栈),这就叫内存释放。


变量的自动类型提升:比如byte b ;   int a ;int  c =  a+b  ,这个时候类型不一致,遵从小的向大的类型提升的规则,byte类型将从1个字节提升为4个字节转换为int类型再 计算。

但是重点来了!假如我写了下面一段程序。

class a{

byte a =1;

a=a+1;

sysotem.out.println(a);

}

这个程序看似没错!但是真的能自动转换吗?事实上执行时候是会报错的,那么这是为是什么呢?惊讶

其实原因是因为a是变量,总所周知byte的取值范围是  --128到+127之间。这个时候假如a在接下来的赋值当中有可能会大于127或者小于-128那么久会造成精度丢失!

所以身为变量的a并不能遵从自动类型提升的规则。那么假如byte类型的值大于127或者小于-128,都会报错!


逻辑运算符:

&&(短路与)  ||(短路或)

& 和 &&的区别   a=1   a>5(假) &a<8(真 )两边都要参与运算!当两边都运算完之后返回假!!  但是当你用  a>5(假) &&   a<8(不运算! )当遇到假的时候直接不用运算后面的数据,效率较高。

所以一般情况下用&&,除非右边的数值涉及到必须要运算。

那么  | 和  ||  也是一样的,| 两边都参与运算  ,||的话如果遇到一个true 就不向下再做运算,结果返回true。

位运算符<<   >>

3<<1  3左移一位,假如把3转换成byte的二进制的每个位都转换成数组中的元素,那么 指的是3被转换成byte之后的二进制的状态下整个数组向左移动1位,也就是说a[0]被删除了,而丢失的位则被0补齐。开始状态下的3的二进制:00000000 00000000 00000000 00000011     改变后:00000000 00000000 00000000 00000110  惊恐结果为6

那么>>右移也是一样的 3>>1开始 :00000000 00000000 00000000 00000011  改变后:00000000 00000000 00000000 00000001。结果就变为1了。

可以这样说,3<<1指的是3*2(n):3乘以2的n次幂。    >>右移的话原符号位的第一位是什么就补什么。

那么位运算的优势是:运算速度快 !   缺点:只能操作2的倍数。 如果在开发中只对2的倍数进行操作。可以用位运算!顺便提一句:2进制最高位0表示正,1表示负。

还有》》》无符号右移  为了一个数取得二进制下的位的其他进制的值。可以运用。二进制中的一段二进制位的无符号移动,比如右移3位,变8进制,4位16进制。

今天先写这么多,兄弟,以后再见!奋斗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值