一:强制(高精度到低精度)类型转换:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 转换时可能存在内存溢出或精度问题
int i=128; byte m=(byte)i; System.out.println(i); System.out.println(m);
byte最高127,所以m的值不正常。
-
int i=20_0000_0000; int j=20; int total=i*j; System.out.println(total);
容量溢出所以错误
-
即使用long型
但因为本身i,j都为int型,相乘结果存在问题,所以也不能转换为合法的结果。
int i=20_0000_0000; int j=20; int total=i*j; System.out.println(total); long total1=i*j; System.out.println(total1);
-
但如果计算中已经转换了一个因子,则结果无误
int i=20_0000_0000; int j=20; int total=i*j; System.out.println(total); long total1=i*j; System.out.println(total1); long total3=((long)i)*j; //转换i为long型 System.out.println(total3);
-
-
字符型与数值型
char i='a'; int j='a'+5; System.out.println(j);
(更为清晰的数值表示)
-
int money=20_0000_0000;//用下划线分割输出无影响 System.out.println(money);
二:程序的可读性
-
尽量不要一行定义多个变量
-
多写注释
三:常量
final 常量名(一般用大写字符)=值;
static final double PI=3.14;//形如static,final都为修饰符,在定义时可任意放在类型名前后
四:变量
Java中的“类”和C中的“结构体”相似,都可以用于封装数据(比如将一棵树分为树干,树枝,叶子,果实),且两者都可以嵌套定义
Java中的“方法”相当于C中的“函数”去实现功能,
修饰符 返回值类型 方法名(参数类型 参数名)
{
...
方法体
...
return 返回值;
}
此段转载自如图
( 一)成员变量(把“类”中,“方法体”外定义的变量称为成员变量)
1.类变量:
- 用static修饰,也称静态变量,是所有对象共有,如果其中有一个对象将它的值改变,则其他对象所得到的值为改变后的。
- 生命周期长,随着类使用完就不存在了(类似于C中的全局变量)。
- 类变量随着类的加载而存在于方法区中。
2.实例变量:
- 不用static修饰,只作用于当前对象。
- 生命周期短,对象作用完就不存在了。
- 实例变量随着对象的建立存在于堆内存中。
public class day02 //这是一个类 { public static void main(String[] args) //类里面默认有一个主程序方法 { int i =10;//在方法里定义局部变量,只在当前方法里有用,且使用之前必须初始化和声明 System.out.println(i); } string name; int age; //两个都是实例变量,如果不初始化则默认为当前类型的默认值 }
(二)局部变量(在方法体中)
与C中的局部变量类似,只存在于它所属的方法中
(针对“四:变量”)总结
public class day02 //这是一个类
{
static String name; //已经定义成类变量
public static void main(String[] args) //类里面默认有一个主程序方法
{
int i =10;//在方法里定义局部变量,只在当前方法里有用,且使用之前必须初始化和声明
System.out.println(i);
System.out.println(day02.name); /*可直接输出,如果不定义为static,还需要day02 dayy=new day02()*/
}
public void add()//还可以定义其他多种方法
{
int y=4;
}
}