由于java是强类型语言,所以要进行有些运算的时候需要用到类型转换。
低 ------------------------------------------------------------------------高
byte,short,char->int->long->float->double
public class HelloWorld {
public static void main(String[] args) {
int i = 128;
byte b =(byte)i;//强制将i的类型转换为byte,这里存在内存溢出的问题,Byte最大值是127,最小值-128,所以这里的值会出问题
//强制类型转换 (类型)变量名 高-->低
//自动转换 低-->高
//System.out.println(i);
//System.out.println(b);
System.out.println((int)21.3);//byte输出为:21 高转低,强制转换,精度丢失
System.out.println((int)-21.89f);//float输出为:-21
}
}
public class HelloWorld {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int noney = 10_0000_0000;
System.out.println(noney);//输出:1000000000
int years = 20;
int total = noney*years;
System.out.println(total);//输出值:-1474836480 计算的时候溢出了
long total1 = noney*years;
System.out.println(total1);//输出值:-1474836480 默认是int,转换之前已经存在问题了?
long total2 = noney*((long)years);//先把一个数转换为long
System.out.println(total2);//输出值:20000000000
}
}
变量
变量是什么:就是可以变化的量,每个变量都必须声明其类型
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量
-
注意事项:
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每个声明都必须以分号结束。
public class HelloWorld {
//属性:变量
//实例变量:从属于对象;如果不自行初始化,这个类型的默认值为 0 0.0
//布尔值默认 false
//除了基本类型,其余的默认值都是null
String name;
int age;
public static void main(String[] args) {//main方法
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new HelloWorld();这句话是说把自己的数据拿到了
HelloWorld helloWorld = new HelloWorld();//先写入:new HelloWorld();按住alt+回车,显示:HelloWorld helloWorld = new HelloWorld();
//可以拿到数据
System.out.println(helloWorld.age);//先写入:helloWorld.age.sout,按住回车键,显示:System.out.println(helloWorld.age);输出值:0
System.out.println(helloWorld.name);//输出值:null
}
//其他方法
public void add(){
}
}
类变量
public class HelloWorld {
//类变量:static
static double salary = 2500;
public static void main(String[] args) {//main方法
//类变量:static
System.out.println(salary);//输出值:2500.0
}
}
常量
- 初始化后不会再改变的值,不会变动的值
- 所谓常量可以理解成一种特殊的变量,它的值被设定以后,在程序运行中不允许被改变
final 常量名=值; final double PI=3.14;
- 常量名一般使用大写字符
public class HelloWorld {
//修饰符不存在先后顺序,静态常量,final常量
static final double PI = 2500;
final static double P = 2500;
public static void main(String[] args) {//main方法
//类变量:static
System.out.println(PI);//输出值:2500.0
System.out.println(P);//输出值:2500.0
}
}
变量命名规
类成员变量:首字母小写和驼峰原则:monthSalary
局部变量:首字母小写和驼峰原则;
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:run(),runRun()
运算符package oper;
public class HelloWorld {
public static void main(String[] args) {
//二元运算符
//ctrl+D,复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a/(double)b);//输出值为:0.5
}
}
实例:
package oper;
public class HelloWorld {
public static void main(String[] args) {
long a = 1211212L;
int b = 123;
short c =10;
byte d = 8;
System.out.println(a + b + c + d);//long
System.out.println(b + c + d);//int
System.out.println(c + d);//int
}
}
====================================================
package oper;
public class HelloWorld {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
int a = 10;
int b = 20;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a == b);
System.out.println(a != b);
int c = 21;
System.out.println(c % a);//取余 c / a 21/10=2...1,输出值为:1,也叫做模运算。
}
}
自增自减运算符(++、–)
package oper;
public class HelloWorld {
public static void main(String[] args) {
//++ -- 自增自减 一元运算符
int a = 3;
int b = a++;//a++ a = a + 1,执行完这行代码后,先给b赋值,再自增
System.out.println(a);//4
int c = ++a;//++a a = a + 1,执行完这行代码之前,先自增,再给c赋值
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//幂运算 2^3 2*2*2=8 很多运算,我们会使用一些工具类来操作
double pow = Math.pow(2, 3);//先写入:Math.pow(2, 3);按住alt+回车键,显示:double pow = Math.pow(2, 3);
System.out.println(pow);//输出值:8.0
}
}
逻辑运算符
package oper;
public class HelloWorld {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a =true;
boolean b =false;
System.out.println("a && b:"+(a&&b));//a && b:false,与,两个变量为真,结果为真
System.out.println("a || b:"+(a||b));//a || b:true,或,两个变量有一个为真,结果为true
System.out.println("! (a && b):"+!(a&&b));//! (a && b):true,非,如果是真则变为假,如果是假,则变为真
//短路运算
int c = 5;
boolean cc = (c<4)&&(c++<4);
System.out.println(cc);//false,c<4是错的,所以就不会执行后面的操作,造成短路,c++<4不会被使用,
System.out.println(c);//5
}
}
位运算符
System.out.println(2<<3);//输出值:16条件运算符
package oper;
public class HelloWorld {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a=a+b
a-=b;//a=a-b
System.out.println(a);
//字符串连接符 + ,String
System.out.println(""+a+b);//输出值:1020
System.out.println(a+b+"");//输出值:30
}
}
扩展赋值运算符
package oper;
public class HelloWorld {
public static void main(String[] args) {
//x ? y : z 如果x==true,则结果为y,否则结果为z
int a = 80;
String type = a < 60 ?"不及格":"及格";//必须掌握
System.out.println(type);//输出值:及格
}
}
优先级



