数据类型转换
1.对于编程来说,无非是两个部分:数据加算法。所谓数据,就是由数据类型和数据值构成的,int i = 10.所谓算法:就是程序中的方法,或者说是在C中函数。method。对于方法(或函数),其构成也很简单:返回值类型 方法名(参数列表)
2.参数列表的形式:数据类型 变量名。
3.声明一个变量:数据类型 变量名。
int value = 0;
int add(int value1,int value2)。
数据类型:是为了要给方法(或函数)提供计算的基本单元。
int add(int value1,int value2){
int sum = value1 + value2;//位运算同样可以实现
return sum;
}
方法(或函数):对程序中的数据值进行计算。
算法:要对数据进行计算的。
程序:最终是要有个结果的,是对数据的处理。
int value1 = 10;
int value2 = 20;
add (value1,value2);
写程序的步骤:
第一步:定义变量
定义变量的时候,考虑:
1.变量的类型(实际上已经考虑了变量的取值范围,数据该是什么样子的)。
2.变量的名称(驼峰命名法:变量名的第一个单词的首字母小写,其后的单词的首字母都要大写。如:appleNum.)
3.变量的具体的值?(程序员不要考虑具体的值是多少,一般情况下是用户给的)
第二步:定义方法
定义方法的时候,考虑:
1.该方法的作用是什么,他要做什么事情(比如:做加法)?他要对那些数据类型提供计算能力(是计算计算整形数据之和)?
2.考虑要处理的数据有多少个?
3.计算完以后,该返回一个什么样的结果?(比如小数和整数相加,最后要返回小数或整数?)
4.考虑方法(或函数)内部该怎么设计?
在java中,我们需要多考虑的一点是:要考虑权限修饰,也就是说,方法是否对外公开的,是给谁用的,不同的使用场景有不同的使用权限。public就是公开的,private就是私有的,只能在该类中被访问。protected?
public private protected default 访问权限弄清楚。
访问修饰 | 同一个类中 | 同一个包中 | 不同包的子类中 | 不同包的非子类中 |
---|---|---|---|---|
private | 可以 | |||
default | 可以 | 可以 | ||
protected | 可以 | 可以 | 可以 | |
public | 可以 | 可以 | 可以 | 可以 |
四个访问修饰符的权限由上自下依次加宽。
第三步:将变量的值传入方法中,自动计算,这个过程叫做方法的调用
int num = 12:
12的二进制是多少?
00001100
12+12=24
0000 1100左移一位
最高位丢了,最高位是0,0001100_
最低位补0:00011000—>16+8==24
12+3?
0000 1100—>12
0000 0011—>3
0000 1111—>15 异或
异或:1^0 = 1 1^1=0 0^0=0
&&逻辑与
&按位与
||逻辑或
|按位或
逻辑与:_1&&_2 要求条件1和条件2同时为真时方为真,
if(a>0&&b<10)eg.a=0,b=5得到的结果是假
int a=5;
int b=10;
int c=0;
if((a>5)&&(c=b)>5){//短路与:只要第一个条件为假,后面的条件程序不执行
短路或:||只要第一个条件为真,后面的条件也就不会看了
…
}
print( c )…>c的值是多少?
if((a>5)&(c=b)>5){//按位与:每一个条件都会检查,不管第一个条件是否为假,如果为假,也会计算第二个条件
…
}
print( c )——>c的值是多少?10
java中有多少种数据类型:
大类:基础数据类型和引用类型
基础数据类型8种
byte(1) short(2) int(4) long(8) double(8) float(4) Boolean(1bit) char(2)
byte–>short–>int–>long…
上述类型转换叫做自动类型转换。
强制类型转换
public class Happy
{
public static void main(String[] args)
{
int iNum = 127;
byte bNum = iNum;
System.out.println(bNum);
}
}
运行测试
public class Happy
{
public static void main(String[] args)
{
int iNum = 127;
byte bNum = (byte)iNum;
System.out.println(bNum);
}
}
128
0000 0000
1000 0000
128+256 = 384
public class Happy
{
public static void main(String[] args)
{
int iNum = 384;
byte bNum = (byte)iNum;
System.out.println(bNum);
}
}
数据在计算机中是以补码的形式存在。
正数:原码,反码补码都一样。
负数的补码:首先求负数的原码,然后对补码求反码:符号位不变,其他位按位求反,也就是1变成0,0变成1.求补码:反码加一。
计算机中存储的补码
384
00000000 00000000 00000001 10000000
这是一个正数,他在内存中以补码的形势存在
转byte:1Byte
10000000 这一串值是补码
求原码,因为输出的是原码
补码: 10000000
先求反码:10000000-1=11111111
原码:10000000—>-128
public class Happy
{
public static void main(String[] args)
{
int iNum = 200;
byte bNum = (byte)iNum;
System.out.println(bNum);
}
}//强制类型转换的精度会造成损失