目录
1、注释、标识符、关键字
2、数据类型
3、 类型转换
4、 变量、常量
5、运算符
6、包机制、JavaDoc
三、类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换
低 ------------------------------------------------->高 byte-->short-->char-> int -> 1ong->float -> double
运算中,不同类型的数据先转化为同一类型,然后进行运算。
- 强制类型转换
- 自动类型转换
public class Demo5 {
public static void main(String[] args) {
int i = 128;
//强制转换 (类型)变量名 高-->低
byte b = (byte)i; //内存溢出
//自动转换 低-->高
double c =i ;
System. out . println(i);
System . out . println(b);
System.out.println(c);
/*
注意点:
1.不能对布尔值进行转换
2. 不能吧俺对象雷翔转换成不想干的类型
3. 高转低 自动转换
4. 低转高 强制转换
5. 会出现内存溢出和精度转换
*/
}
}
结果如下:
精度问题,转换问题,溢出问题
public class Demo6 {
public static void main(String[] args) {
System.out.println("======精度问题=====");
//精度问题
System. out. println((int)35.4);
System. out . println((int)-45.89f); //-45
System.out.println("======char转换=====");
char d = 'a';
int e = d+1;
System. out . println(e);
System. out . println((char)e);
//操作比较大的数字,注意溢出问题
//JDK7的新特性,数字之间可以用下划线进行分割
int money = 10_0000_0000;
System.out.println("monry:"+money);
int years = 20;
int total = money*years;
System.out.println("total1:"+total); // -1474836480 ,计算的时候溢出
long total2 = money*years; //默认是 int 先转换成int 再转换成long
System.out.println("total2:"+total2);
long total3 = money *((long)years); //先把一个数转换成long
System.out.println("total3:"+total3);
long total4 = years *((long)money);
System.out.println("total3:"+total4);
}
}
结果如下:
四、变量,常量
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
变量
1.书写格式
type varName [=value] [{, varName[=value]}]
//数据类型变量名 =值;可以使用逗号隔开来声明多个同类型变量。
代码示例
public class Demo7 {
public static void main(String[] args) {
// int a,b,c
int a=1,b=2,c=3;
String name = "yee定去北京!";
char x = 'X';
double pi = 3.1515926;
}
}
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是-条完整的语句,因此每一个声明都必须以分号结束
2.变量作用域
- 类变量 ====static
- 实例变量 =====写在类中间,没有static
- 局部变量 =====在方法里面
代码示例
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class Demo8 {
//类变量 static
static double salary = 2500;
//属性,变量
// 实例变量,从属于对象,从属于类
//实例变量如果不自己初始化,这个类型的默认值是 0.0.0
//布尔值 默认值是 false
// 除了基本类型 其余的默认值都是 null
String name; //不用初始化
int age;
//main 方法
public static void main(String[] args) {
//局部变量 ;必须初始化,必须声明;
int i = 1;
System.out.println(i);
//变量类型 变量名字 = new
Demo8 demo08 = new Demo8();
System.out.println(demo08.name);
System.out.println(demo08.age);
//类变量 static
System.out.println(salary);
//其他方法
}}
3.变量命名规则
- 所有变量、方法、类名:见名知意
- 类成员变量:首宅母小写和驼峰原则:monthSalary除了第-个单词以外,后面的单词首字母大写lastname,lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX VALUE
- 类名:首字母大写和驼峰原则: Man, GoodMan
- 方法名:首字母小写和驼峰原则: run(), runRun()
常量
常量:初始化后不能改变的数值
final 常量名 = 值;
final double PI=3.14;
常量名一般使用大写字符
五、运算符
Java 语言支持如下运算符:
- 算术运算符:+, -, *, /, %(取余), ++, -
①代码示例
package operate;
public class Demo1 {
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); //结果是 0 因为 10/20=0.5 默认输出int 四舍五入为0
System.out.println(a/(double)b);// 结果是0.5
}
}
②代码示例
package operate;
public class Demo2 {
public static void main(String[] args) {
long a = 132456789313L;
int b = 123;
short c = 13;
byte d = 2;
System.out.println( a+b+c+d); //Long 有long就是long
System.out.println( b+c+d); //int 没long有int 是int
System.out.println( c+d); //int int short 是int
System.out.println( d);
}
}
- 赋值运算符=
代码示例
package operate;
public class Demo3 {
public static void main(String[] args) {
//关系返回的结果:正确 错误 返回是布尔值
int a = 5;
int b = 5;
int c = 54;
//取余 模运算
System.out.println(c%a); // c / a 54 / 5 = 10 .... 4
System.out.println(a<b);
System.out.println(a>b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
- 关系运算符:>,<, >=, <=, ==,!= instanceof
package operate;
public class Demo4 {
public static void main(String[] args) {
// ++ 自加 -- 自减 一元运算符
int a = 3;
int b = a++; //a++ ===> a = a+1
System.out.println("第一次运算后的a和b");
//先赋值 后自增
System.out.println(a);
System.out.println(b);
int c = ++a;
System.out.println("第二次运算后的a和c");
//先自增 后赋值
System.out.println(a);
System.out.println(c);
System.out.println("第一次运算后的a和b");
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 很多数学运算运用了Math方法
double pow = Math.pow(2,3);
System.out.println("pow结果");
System.out.println(pow);
}
}
- 逻辑运算符:&&, |,!
代码示例
package operate;
//逻辑运算符
public class Demo5 {
public static void main(String[] args) {
//与 或 非
boolean a = true ;
boolean b = false;
System. out . println ("a && b结果是:"+(b&&a)); //逻辑与运算:两个变量都为真,结果才为true
System. out . println ("a||b结果是:"+(a||b)); //.逻辑或运算:两个变量有一个为真,则结果才为true
System. out . println ("! (a && b)结果是: "+!(a&&b)); //如果是真,则变为假,如果是假则变为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4); //第一步是错的就没有执行第二步,没有执行c++的操作
System.out.println(d);
System.out.println(c); //如果执行了c++的操作 那么c输出结果是6
}
}
- 位运算符:&, |,^,~,>,<<,>>>了解!!!)
代码示例
package operate;
public class Demo6 {
public static void main(String[] args) {
/*
逻辑运算
A = 0011 1100
B = 0000 1101
------------------------
A&B = 0000 1100 (都1为1,有0位0)
A/B = 0011 1101 (都0为0,有1为1)
A^B = 0011 0001(相同为0,不同为1)
~B = 11111 0010(B是1,^B为0)
位运算符操作:
2*8=16 2*2*2*2
<< ====== *2
>> ====== /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System. out . println(2<<3);
}}
- 条件运算符? :
代码示例
package operate;
//三元运算符
public class Demo8 {
public static void main(String[] args) {
//x?y:z
//如果x==true,则结果为Y,否则结果为Z
int score = 60;
String type1 = score < 50 ?"不及格":"及格";
System.out.println(type1);
String type2 = score < 90 ?"不及格":"及格";
System.out.println(type2);
}
}
- 扩展赋值运算符:+=, -=, *=, /=
代码示例
面试问题:“ ”+a+b 和a+b+"" 的区别
package operate;
public class Demo7 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//扩展赋值运算符
a+=b; // a=a+b
System.out.println("a+=b的结果是: "+a);
a-=b;// a=a-b
System.out.println("a-=b的结果是: "+a);
//字符串连接符 +
System.out.println("a+b的结果是:");
System.out.println(a+b);
System.out.println("\" \"+a+b的运算结果是:"+"\n"+" "+a+b);
System.out.println("a+b\" \"的运算结果是:");
System.out.println(a+b+" ");
}
}
学习资料来源:狂神说JAVA