1、类型转换
直接转换: 低的数据类型向高数据类型转换
强制转换:高数据类型向低数据类型转换,(类型)变量名
注:1、不能对布尔值进行转换;
2、不能把对象类型转换为不相干的类型;
3、把高容量转换到低容量用强制转换;
4、转换中可能存在内存溢出或精度问题。
int money = 1000000000;
int year = 20;
long total = money*year;//输出为负数,因为money和year均为int,则默认为int,所以在转换为long之前就输出为int类型了
long total = money*((long)year);//可以先把一个数转换为long
2、变量、常量和作用域:
public class Test02 {
//常量,final 常量名 = 值,常量名用大写
//static,final均为修饰符,不存在先后顺序
static final double PI = 3.14;
//类变量,前加static,可以直接输出
static double salary = 2500;
/*实例变量:从属于对象,在类与方法之间定义。若不进行初始化,此类型默认值为0 或 0.0;
布尔值默认为false;
除了以上基本类型外,其余默认值为null。
*/
String name;
int age;
public static void main(String[] args) {
//局部变量:必须声明和初始化,在方法内部使用
int i = 10;
System.out.println(i);
//实例变量不可直接输出,变量类型 变量名 = new Test01();
Test02 test02 = new Test02();
System.out.println(test02.age);//输出为0
System.out.println(test02.name);//输出为null
//类变量直接输出
System.out.println(salary);
//常量
System.out.println(PI);
}
}
/*
变量命名规范:
类成员变量、局部变量:首字母小写和驼峰原则(monthSalary)
常量:大写字母和下划线
类名:首字母大写和驼峰原则(GoodMan)
方法名:首字母小写和驼峰原则
*/
3、运算符
一元运算符:+、 -、 ++i、 i++、i–、–i、!
i++和++i相当于i=i+1,
在参与运算时,i++先运算,运算之后自身再加1,++i是自身加1之后再参与运算
二元运算:±*/%
java中整形做除法运算取得的商,不考虑余数,"%"表示模运算,取的是对应的余数
三元运算 :条件?条件成立返回的值:条件不成立返回的值 int result = i>j?i:j;
=表示赋值 ==表示比较两值是否相等,返回布尔值
例如幂运算等需要借助Math工具类来执行
double pow = Math.pow(2,3);//计算2的三次方
位运算:&(与),|(或),^(异或),~(非),<<(位左移,相当于*2),>>(位右移,相当于/2)
逻辑运算:&&(与),||(或),!(非)
扩展运算符:
字符串连接符(+):
int a = 10;
int b = 20;
System.out.println(""+a+b);//输出1020,字符串在前,默认为字符串连接
System.out.println(a+b+"");//输出30
+=(a+=b即a=a+b),-=,/=,*=
4、包机制
为了更好组织类,Java提供包机制,用于区别类名的命名空间
包语句句法格式:
package pkg1[.pkg2[.pkg3...]];
一般利用公司域名倒置作为包名。
为了可以使用某一个包的成员,必须明确导入包:
import package1[.package2...].(classname|*);//*代表导入包中所有内容
5、Scanner类使用
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
//输入多个数字求其总和和平均数,每输入一个数字回车确认,通过输入非数字结束输入并输出执行结果。
Scanner scanner = new Scanner(System.in);//使用scanner输入的固定开头用法
//和
double sum = 0;
//计算输入了多少个数字
int m = 0;
//循环判断是否还有输入,并进行求和统计
while(scanner.hasNextDouble()){//hasNextDouble()判断是否有下一个数输入
double x = scanner.nextDouble();//有下一个数输入的话,nextDouble()获取输入数字
m = m + 1;
sum = sum + x;
System.out.println("你输入了第"+m+"个数据,当前结果为sum="+sum);
}
System.out.println(m+"个数的和是"+sum);
System.out.println(m+"个数的平均值是"+(sum/m));
scanner.close();//scanner用完必须关闭,避免占内存
}
}
/*注:Scanner类中方法next()和nextline()
1、next()不能得到带有空格的字符串,它遇到空格就会结束
2、nextline()以Enter为结束符,字符串中可以有空格
*/
6、条件语句:
if(条件){
执行业务操作
}、
if(条件){
条件成立执行的语句
}else{//否则
条件不成立执行的语句
}、
if(条件){
条件成立执行的语句
}else if(){//否则
条件不成立执行的语句
}else if(){//否则
条件不成立执行的语句
}else{
}
if(条件){
if(条件){
条件成立执行的语句
}else{//否则
条件不成立执行的语句
}
}else{//否则
条件不成立执行的语句
}
switch:一般当条件值是固定的值的情况下
switch(变量){
case 值1:操作
break;
case 值2:操作
break;
case 值1:操作
break;
default:
操作;
}
不加break,会把之后的语句全部输出。
switch支持哪些数据类型:byte,short,int ,char,String