类型转换
运算中,不同类型的数据先转换为同一类型,然后进行运算
浮点数比整数容量高
强制转换:(类型)变量名 高——低
自动转换 :低——高
int i=128;
byte b=(byte) i;//强制转换 (类型)变量名 高——低
System.out.println(i);//128
System.out.println(b);//-128 内存溢出
//====================================================
double d=i;//自动转换 低——高
System.out.println(d);//128
注意
-
不能对布尔值进行转换
-
不能把对象转换为不相干的对象
-
在把高容量转换到低容量的时候,需要强制转换
-
强制转换时注意内存溢出,或者精度问题
System.out.println((int)23.7);//23 精度问题
System.out.println((int)-45.78F);//-45 精度问题
举例
//举例
char c='a';
int e=c+1;//自动转换 低——高
System.out.println(e);
System.out.println((char)e);//强制转换 高——低
//===========================================
//操作比较大的数字的时候,注意内存溢出
//JDK7新特性,数字之间可以用下划线隔开
int money=10_0000_0000;
int years=20;
int total=money*years;
long total2=money*years;
long total3=money*((long)years);
System.out.println(total);//-1474836480,内存溢出
System.out.println(total2);//-1474836480 默认是int,转换之前就已经出问题了
System.out.println(total3);//20000000000 先把一个变量转换为long
变量
-
变量就是可以变化的量
-
java是一种强类型语言,每个变量都必须声明其类型
-
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域
-
尽量不要在一行里面定义多个变量
变量作用域
-
类变量(插入关键词static)
-
实例变量(无关键词)
-
局部变量(写在方法里面)
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
常量
-
初始化后不能改变值
-
常量名一般使用大写字符、
public class demo06 {
//类变量 static 全局可用
static double salary=3000;
//常量 final为修饰符,不存在先后
static final double PI=3.14;
//final static double PI=3.14;两者意思一样
//还可以定义一些属性:变量
//实例变量:从属于对象;如果不进行初始化,会输出这个这个类型的默认值 0 0.0
//布尔值:默认值是false;除了基本类型,其余类型默认都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:只有在方法的大括号里可以使用
int i=10;//必须声明初始值(赋值)
System.out.println(i);
//实例变量输出
//变量类型 变量名字=new demo06();
demo06 demo06 = new demo06();
System.out.println(demo06.age);//0
System.out.println(demo06.name);//null
//类变量输出
System.out.println(salary);//3000
//常量输出
System.out.println(PI);//3.14
}
//其他方法
public void add(){
}
}
命名规范
-
所有变量,方法,类名:要做到见名知意
-
类变量:首字母小写和驼峰原则:(monthSalary)
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:(MAX_VALUE)
-
类名:首字母大写和驼峰原则:(GoodMan)
-
方法名:首字母小写和驼峰原则:(runRun())
运算符
-
算输运算符:+,-,*,/,%(取余),++(自增),--(自减)
-
赋值运算符:a=b(把b赋值给a)
-
关系运算符:>,<,>=,<=,==(等于是两个等号),!=(不等于),instanceof
package operaor;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a=10;
int b=20;
int c=30;
int d=40;
int t=3;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);//double类型
System.out.println(a%t);//取余 10/3=3...1
System.out.println("==============================================");
//运算时有long(double)类型时,结果为long(double);其余都为int类型
long l=12312132132L;
int i=1234;
short s=12;
byte y=8;
System.out.println(l+i+s+y);//long
System.out.println(i+s+y);//int
System.out.println(s+y);//int
System.out.println("==============================================");
//一元运算符 ++,-- 自增,自减
int a1=3;
int b1=a1++;//先赋值 再自增
//a++ a=a+1
System.out.println(a1);//4
//++a a=a+1
int c1=++a1;//先自增 再赋值
System.out.println(a1);//5
System.out.println(b1);//3
System.out.println(c1);//5
System.out.println("==============================================");
//关系运算符:true/false
int e=10;
int f=20;
System.out.println(e>f);//false
System.out.println(e<f);//true
System.out.println(e==f);//false
System.out.println(e!=f);//true
System.out.println("==============================================");
//幂运算
double pow = Math.pow(2, 3);
System.out.println(pow);
}
}
-
逻辑运算符:&&,||,!
//与(&&) 或(||) 非(!)
boolean a=true;
boolean b=false;
System.out.println("a&&b:"+(a&&b));//一假则假,全真才真
System.out.println("a||b:"+(a||b));//一真则真,全假才假
System.out.println("!(a&&b):"+(!(a&&b)));//若真则假,若假则真
System.out.println("=========================================");
//短路运算
int c=5;
boolean d=(c<4)&&(c++>4);//c<4已经是假,则d肯定为假,所以后面的c++不执行
System.out.println(d);//false
System.out.println(c);//5
} -
位运算符:&,|,^(异或),~(取反),<<,>>,>>>(了解)
//位运算
/*
A=0011 1100
B=0000 1101
---------------------------------------
A&B=0000 1100//都为1才为1,其余都为0
A|B=0011 1101//都为0才为0,其余都为1
A^B=1100 1100//两者相同才为1,不同为0
~B=1111 0010//取反
*/ -
条件运算符:?,:
//三元运算符 x?y:z
int score=80;
String type=score<60?"不及格":"及格";
System.out.println(type);//及格
//如果x==true,则结果为y,否则结果为z -
扩展赋值运算符:+=,-=,=,/=*
int a=10;
int b=20;
a+=b;//a=a+b
a-=b;//a=a-b
System.out.println(a);
-
拓展:字符串连接符: +
//字符串连接符 + ,加法两侧出现String类型,则会将另一边都转换为String类型连接起来
int a=10;
int b=20;
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30