JAVA基础语法(二)类型转换、变量、常量、运算符、包机制、javadoc
类型转换
运算中不同类型的数据先转换到同一类型,然后进行运算。
强制转换语法:(类型)变量名
public class App {
public static void main(String[] args) {
//强制转换 高容量转化到低容量
int i =128;
byte b = (byte)i;
System.out.println(i);
System.out.println(b);//输出后为-128,是因为byte最高位127,128内存溢出
//自动转换 低容量转化到高容量
int i0 = 128;
double b0 = i;
System.out.println(i0);
System.out.println(b0);
System.out.println("===================================");
System.out.println((int)20.7);
System.out.println((int)-45.86F);
/*
注意事项:
1、不能对布尔值进行转换
2、不能把对象类型转换为不相干的类型
3、在把高容量转化到低容量的时候,强制转换
4、转换的时候可能存在内存溢出,或者精度问题
*/
}
}
常见问题:
public class App {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;//结果:-1474836480,计算的时候溢出了
System.out.println(total);
long total2 = money*((long)years);
System.out.println(total2);//先把一个数转化为long
}
}
变量
语法:变量名 = 值;
变量作用域:
-
类变量
-
实例变量
-
局部变量
/** * App */ public class App { //实例变量,在类中,从属对象,使用只可调用这个类,可以不初始化,会给个默认值 String name; int age; //类变量 static static double salary = 2500; //main方法 //属性变量 public static void main(String[] args) { //局部变量;有效期只在本方法;必须声明和初始化 int i = 1; System.out.println(i); //引用实例变量 //变量类型 变量名字 = new 变量方法 App app = new App(); System.out.println(app.age); System.out.println(app.name); System.out.println(salary); } //其他方法 public void add() { } }
注意:
-
每个变量都必须有类型,类型可以是基本类型,也可以是引用类型
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以分好结束
-
实例变量,在类中,从属对象,使用只可调用这个类,可以不初始化,会给个默认值( int、float等默认0、0.0;布尔值默认false;除了基本类型默认null)
-
局部变量,有效期只在本方法;必须声明和初始化
变量的命名规范
- 所有变量、方法、类名:见名知其意
- 类成员变量:首字母小写和驼峰原则:mothSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
常量
常量可以理解为一个特殊变量,它的值被设定后,在程序运行过程中不允许被改变。
语法:final 常量名=值;
注:常量名一般使用大写字母。
public class App {
//static 、final是修饰符,不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args){
System.out.println(PI);
}
}
运算符
- 算术运算符:+,-,*,/,%,++,--
- 赋值运算符=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
注:
-
当运算变量中有double为double(最高级),有Long类型时结果为Long,其他结果都是int
-
如果结果涉及小数,提前把变量变为double类型
-
a++ 相当于a=a+1,执行这个代码,先赋值给b,再自增
-
++a 相当于a=a+1,执行这个代码,先自增,再赋值
-
很多运算我们用工具类运算,例如Math类
package base; /** * App */ public class App { public static void main(String[] args) { //二元运算符 int a =10; int b =21; int c =30; int d =35; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(b%a); System.out.println(a/(double)b);//如果结果涉及小数,提前把变量变为double类型 System.out.println("===================================="); long a1 = 12323131313131313L; int b1 = 123; short c1 = 10; byte d1 = 8; System.out.println(a1+b1+c1+d1); System.out.println(b1+c1+d1); System.out.println(a1+(double)b1); System.out.println(c1+d1);//当运算变量中有double为double(最高级),有Long类型时结果为Long,其他结果都是int System.out.println("===================================="); //关系运算符返回的结果:布尔值true、false System.out.println(c>d); System.out.println(c<d); System.out.println(c==d); System.out.println(c!=d); System.out.println("===================================="); //++,--自增,自减 一元运算符 int aa = 3; int bb = aa++;//a++ 相当于a=a+1,执行这个代码,先赋值给b,再自增 System.out.println(aa); System.out.println(bb); int cc = ++aa;//++a 相当于a=a+1,执行这个代码,先自增,再赋值 System.out.println(aa); System.out.println(cc); System.out.println("===================================="); //幂运算 2^3 很多运算我们用工具类运算,例如Math类 double pow = Math.pow(2, 3); System.out.println(pow); } }

package base;
/**
* App
*/
public class App {
//逻辑运算符
public static void main(String[] args) {
//与(and)、或(or)、非(取反)
boolean a = true;
boolean b = false;
System.out.println(a&&b);//逻辑与运算:两个变量都为真,结果才为true
System.out.println(a||b);//逻辑或运算:两个边路有一个为真,结果才为ture
System.out.println(!(a&&b));//逻辑非运算:如果是真,则变为假,如果是假,则变为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);//当c<4为假,后面将不再执行
System.out.println(d);
System.out.println(c);
}
}

package base;
/**
* App
*/
public class App {
//位运算
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
-------------------------------------------
与:A&B = 0000 1100 都是1为1,否则为0
或:A|B = 0011 1101 有1为1,否则为0
异或:A^B = 0011 0001 相等为0,不等为1
取反:~B = 1111 0010 完全取反
-------------------------------------------
题目:2*8 怎么运算最快 2*2*2*2
<<
>>
*/
System.out.println(2<<3);
/*
结果为16
0000 0000 0
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
所以<<等于*2、>>等于/2
*/
}
}
public class App {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a+=b);//30,a = a+b
System.out.println(a-=b);//-10,a = a-b
System.out.println(a*=b);//200,a = a*b
System.out.println(a/=b);//10,a = a/b,因为前面a已经变成了200,200/20=10
//字符串连接符 +
System.out.println(a+b);
System.out.println(""+a+b);//结果:1020 如果+左右有string类型,那么会都自动转化为string再进行拼接
System.out.println(a+b+"");//结果:30 如果string在最后,会先计算再拼接,因为+的优先级为从左到右
}
}
/**
* 三元运算符
*/
public class App {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则为z
int soure = 50;
String type = soure < 60 ?"不及格":"及格";
System.out.println(type);
}
}
优先级:

包机制
作用:用于区别类名的命名空间(实际就是文件夹)
语法:package pkg1;
规范:一般将公司域名倒置作为包名
例子:www.baidu.com 命名:com.baidu.www
看看阿里巴巴开发手册
javadoc
作用:javadoc命令是用来生产自己API文档的
参数信息:
- @author 作者
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.xiaobai;
/**
* @author xiaobai
* @version 1.0
* @since 1.8
*/
import java.util.Date;
import com.base.Add;
public class App {
String name;
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
cmd:javadoc -encoding UTF-8 -charset UTF-8 App.java

浙公网安备 33010602011771号