Java基础
阿里巴巴java开发手册
一、注释
-
设置工程参数:
-
file—Project Structure,将SDK调整为1.8,Language Level调整为8,并apply
-
新建一个Class,写出Hello,World!
-
单行注释 //单行注释
-
多行注释: /* */
-
文档注释: /** */
-
Sout
Psvm
二、标识符
-
标识符是大小写敏感的
三、数据类型
-
基本类型(8个)
-
-
四、数据类型转换(Demo05&06)
-
从低至高:byte, short, char——int——long——float——double
-
小数的优先级大于整数
-
强制转换:(类型)变量名 高—低
-
自动转换:低—高
-
注意: 1. 不能对布尔值进行转换 2. 不能把对象类型转换为不相干的类型 3. 把高容量转换为低容量时,强制转换 4. 转换的时候可能存在内存溢出或者精度问题
package com.guang.base; public class Demo05 { public static void main(String[] args) { int i=128; byte b=(byte)i;//内存溢出 System.out.println(i); System.out.println(b); //强制转换:(类型)变量名 高—低 //自动转换:低—高 double c=i; System.out.println(c); /* 1. 不能对布尔值进行转换 2. 不能把对象类型转换为不相干的类型 3. 把高容量转换为低容量时,强制转换 4. 转换的时候可能存在内存溢出或者精度问题! */ System.out.println("=================="); System.out.println((int)23.7);//23 System.out.println((int)-45.89f);//45 System.out.println("=================="); char e='a'; int f=e+1; System.out.println(f); System.out.println((char) f); } }
package com.guang.base; public class Demo06 { public static void main(String[] args) { //操作比较大的数的时候注意溢出问题 //JDK7新特性,数字间可以用下划线分割 int money=1_000_000_000; int years=20; int total=money*years;//-1474836480,计算结果溢出 long total2=money*years;//-1474836480,默认后面两个的乘积为int类型,计算之前已经存在问题了 long total3=money*((long)years);//计算时先把一个数据类型转成long System.out.println(total); System.out.println(total2); System.out.println(total3); } }
五、变量(demo08)
-
变量是程序中的最基础的存储单元,要素包括变量名,变量类型和作用域。
-
每个变量都有类型,包括基本类型和引用类型
-
变量名是合法的标识符
-
变量声明是一条完整的语句,每一个声明都需要用 ; 隔开
-
-
变量作用域:类变量;实例变量;局部变量
package com.guang.base; public class Demo08 { //属性:变量 //类变量 static 从属于类,可直接输出 static double salary=2500; //第一:实例变量,从属于对象;如果不自行初始化,这个类型将输出默认值,0或0.0 u000 //布尔值的输出默认值是false //除了基本类型(8ge),其余的类型输出默认值都是null String name; int age; //main方法 public static void main(String[] args) { //第二,局部变量,在方法之间,必须声明和初始化值 int i=10; System.out.println(i); //实例变量的使用 //变量类型 变量名字 = new com.guang.base.Demo08() Demo08 demo08 = new Demo08(); System.out.println(demo08.age);//demo08是变量的名字,所以是小写 System.out.println(demo08.name); //类变量 System.out.println(salary); } //其他方法 public void add(){ } }
六、常量(demo09)
final 常量名=值;(常量名一般用大写字符)
package com.guang.base; public class Demo09 { //修饰符static和final,不存在先后顺序 static final double PI=3.14; public static void main(String[] args) { System.out.println(PI); } }
七、运算符
-
算数运算符:+,-,*,/,%(取余数),++,--
package com.guang.operator; public class Demo01 { 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/(double)b);//int类型,除出来后去除小数取整,强转一个为double类型 } }
自增++、自减--
package com.guang.operator; public class Demo04 { public static void main(String[] args) { //++ -- 自增,自减,一元运算符 int a=3; int b = a++;//执行完这代码后,先给b赋值,a再自增 //a++ a=a+1; System.out.println(a);//4 //a++ a=a+1; int c = ++a;//++a a=a+1;//执行完这代码后,先自增,再给c赋值 System.out.println(a);//5 System.out.println(a); System.out.println(b); System.out.println(b); System.out.println(c); System.out.println(c); //幂运算 2^3; 很多运算会采用工具类来操作; double pow = Math.pow(2, 3); System.out.println(pow); System.out.println("______________"); int e=2; System.out.println(e); int f=e++;//执行完这代码后,先给f赋值,e再自增//赋值给f的e是没有自增的,所以f=2; System.out.println(e); int g=++e;/*执行完这代码后,e先自增,再给g赋值//赋值给g的e是先进行自增的, e给f赋值后先自增,然后自增后的e在赋值给g前先自增,在赋值给g,相当于2+1+1=4;*/ System.out.println(e); System.out.println(f); System.out.println(g); System.out.println("______________"); int i=4; System.out.println(i); int h=++i; System.out.println(i); } }
-
赋值运算符:=
package com.guang.operator; public class Demo02 { public static void main(String[] args) { long a=1234827834948L; 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 } }
-
关系运算符:>,<,>=,<=,!=(不等于),instanceof
package com.guang.operator; public class Demo03 { //关系运算符返回布尔值,正确,错误 public static void main(String[] args) { int a=10; int b=20; int c=21; System.out.println(c%a);//c/a 1 System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b); } }
-
逻辑运算符:&&(与),||(或),!(非)
package com.guang.operator; public class Demo05 { //逻辑运算符,或与非 public static void main(String[] args) { 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));//逻辑非运算,如果是真则为假,如果是假则为真 //短路运算,当与运算第一个条件为假时,则不会判断后续条件。 int c=5; boolean d=(c<4)&&(c++<7); System.out.println(d); System.out.println(c);//c小于4,结果为假,故d未执行c++操作; } }
-
位运算符:&,|,^,~,>>(右移),<<(左移),>>>(右移且把高位等于0)
-
A=0011 1100 B=0000 1101 A&B=0000 1100 与运算,都是1则为1,否则为0 A|B=0011 1101 位运算,都是0则为0,否则为1 A^B=0011 0001 异或,相同取0,不同取1 ~B=1111 0010 取反,与上述相反,0则为1,1则为0 << 相当于*2 >> 相当于/2 000000 0 000001 1 000010 2 000100 4=2<<1 001000 8=2<<2 010000 16=2<<3
-
-
条件运算符:?,:
public class Demo08 { public static void main(String[] args) { //x?y:z 意思是如果x==ture,则结果为y,否则结果为z int score=80; String type=score<60?"不及格":"及格"; System.out.println(type);//及格 }
-
扩展赋值运算符:+=,-=,*=,/=
int a=10; int b=20; a-=b;//a=a-b System.out.println(a);//-10 a+=b;//a=a+b System.out.println(a);//10 //字符串连接符 + , String类型“” System.out.println(""+a+b);//1020,空为字符串类型,后面加上加号表示把所有的当做字符串进行连接; System.out.println(a+b+"");//30,先进行加法,然后进行求和运算; System.out.println(""+(a+b));//30,先进行加法,然后进行求和运算;
八、包机制
-
一般用公司域名倒置进行命名 如:com.baidu.www
-
package pkg1[.pkg2[.pkg3...]];
-
包名在代码的最顶端,导入其他包用“import package pkg1[.pkg2[.pkg3...]]”,导入包的代码放在原始包名下面
九、Java.Doc
-
javadoc命令是用来生成自己API文档的
-
参数信息:
-
@author作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
@param参数名
-
@return 返回值情况
-
@throws 异常抛出情况
-
-
通过命令行生成JavaDoc文档:javadoc -encoding UTF-8 -charset UTF-8 Doc.java
-
通过IDEA生成“JavaDoc文档”:Tools——Generate JavaDoc,选择文件夹及对应位置。
package com.guang.base; /** * @author Guang * @version 1.0 * @since 1.8 */ public class Doc { String name; /** * @author Guang * @param name * @return * @throws Exception */ public String test(String name){ return name; } }