使用狂神的视频复习了一下JavaSE,视频链接:
Java基础知识
名词解释
JDK = Java Develpment Kit = java 开发工具
JRE = Java Runtime Environment = Java运行环境
JVM = java Virtual Machine = java 虚拟机
JDK = JRE + 开发工具 ,即开发者使用
JRE = JVM + 核心类库 , 即用户使用
JavaSE = J2SE = 标准版,开发本机应用
JavaEE = J2EE = 企业版,开发联网应用
JavaME = J2ME = 移动版,开发移动端应用
安装环境
请确保JDK与IDEA安装完成
Hello World
以往常用Eclipse作为Java的开发软件,
不过现在有了更强大的IDEA。
新建一个Java工程,新建Java类Demo01:
public class Demo01 { public static void main(String[] args) { System.out.println("Hello World"); } }
(打出main会有主方法的提示,打出sout会有输出方法的提示)
点击运行按钮,在控制台打出Hello World:
注释
// 单行注释 /* * 多行注释 * */
单行注释快捷键Ctrl + /,多行注释快捷键Ctrl + Shift + /
变量
标识符和关键字
在所有程序中有特殊意义的文字标记,称为关键字。
-
48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
-
2个保留字(现在没用以后可能用到作为关键字):goto、const。
-
3个特殊直接量:true、false、null。
凡是可以由自己命名的地方都称为标识符。 例如,对于常量、变量、函数、语句块、类、项目等都需要一个名字,这些我们都统统称为标识符。
-
标识符只能以拉丁字母大小写、美元符或下划线开始,只能以这些字符和数字作为组成部分。
-
标识符不能以关键字命名。
-
标识符是大小写敏感的。
数据类型
Java是强类型语言,区别于弱类型语言(如JavaScript),
就是所有数据都要声明数据类型才能够使用。
-
基本数据类型
-
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
-
short:16位,最大数据存储量是65535,数据范围是-32768~32767之间。
-
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
-
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
-
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
-
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
-
boolean:只有true和false两个取值。
-
char:16位,存储Unicode码,用单引号赋值。
-
-
引用数据类型
-
类
-
接口
-
数组
-
public static void main(String[] args) { //整数 int num1 = 10; byte num2 = 20; short num3 = 30; long num4 = 40; //小数 float num5 = 10.1F; double num6 = 20.2; //字符 char word = 'A'; //布尔值 boolean flag = true; System.out.println(num1); System.out.println(num2); System.out.println(num3); System.out.println(num4); System.out.println(num5); System.out.println(num6); System.out.println(word); System.out.println(flag); }
打出上述八大基本类型,其中float必须加F,double可以不加D,long可以不加L。
1bit = 1b = 1位
1Byte = 1B = 8位
1KB = 1024B
1M = 1024KB
1G = 1024M
数据类型的一些拓展:
public static void main(String[] args) { //整数扩展: 二进制:0b , 八进制:0 , 十六进制:0x int i1 = 10; int i2 = 010; int i3 = 0b10; int i4 = 0x10; System.out.println(i1); System.out.println(i2); System.out.println(i3); System.out.println(i4); System.out.println("===================="); //浮点数扩展: 精度丢失 float f = 0.1F; double d = 0.1; System.out.println(f); System.out.println(d); System.out.println(f==d); System.out.println("===================="); //字符扩展: 类型转换与Unicode码 char c1 = '1'; char c2 = '我'; System.out.println((int)c1); System.out.println((int)c2); for (int i = 65;i <= 122;i++){ System.out.print((char) i); } }
打出以上代码并体会结果。
类型转换
不同类型的数值运算时,会进行自动转换,规则是整数变浮点、容量小的变容量大的,
在数值前加个括号,里面写要转换的类型,就能强制转换,
如果将容量大的数值强行转换为容量小的,就会溢出:
int i = 128; byte b = (byte) i; System.out.println(b);
这样打出来的不是128,而是-128,因为byte的范围是-128到127,溢出而循环变成-128了。
变量、常量与作用域
变量有三个要素:变量名、变量类型、作用域。
变量类型除了基本类型,还可以是引用类型(如String)。
变量名必须是合法的标识符。
//数据类型 变量名 = 数值 int i = 1; String str = "小明";
根据作用域,可以将变量分为类变量、实例变量和局部变量,
类变量带static关键字,实例变量不带,而局部变量是写在方法里的。
类变量带有static,比较好引用,
实例变量则要将类实例化,才能引用,
局部变量的生命周期只在方法中。
实例变量无需初始化,因为会自动赋默认值:
public class Demo04 { String name; int age; public static void main(String[] args) { Demo04 demo04 = new Demo04(); System.out.println(demo04.name); System.out.println(demo04.age); } }
输出的默认值为null和0。(除了基本类型,默认值都是null。布尔值的默认值是false)
而常量一旦初始化后就不能更改:
//final 数据类型 常量名 = 数值 //常量名一般用大写字符 final double PI = 3.14;
命名规则:
-
变量、方法名:首字母小写,驼峰命名
-
类名:首字母大写,驼峰命名
-
常量:全部大写,下划线分隔
通用规则:见名知意。
运算符
基本运算符
-
算术运算符:+,-,*,/,%,++,--
-
赋值运算符:=
-
关系运算符:>,<,>=,<=,==,!=,instanceof
-
逻辑运算符:&&,||,!
十分好理解,加减乘除、取模、自增自减。赋值。大于小于,大于等于小于等于,等于不等于,
instanceof判断a是否为A类的一个示例,输出布尔值。与或非。
输出整数运算结果时,如果操作数有long则返回long,否则都是int。
自增自减运算符与Math类
运行以下代码并体会结果:
public static void main(String[] args) { int a = 10; int b = 10; System.out.println(a++); System.out.println(++b); System.out.println(a); System.out.println(b); }
a++就是先用a,然后a+=1,++b就是先b+=1,然后用b。自减也是同理。
(a += b等价于a = a+b)
平时我们会用尖号表示幂运算,如2^3=8,但Java中没有这种写法,我们要借助Math类来实现幂运算:
int c = 2; int d = 10; double res = Math.pow(c,d); System.out.println((int)res);
Math类下有很多方法,可以实现我们常用的数学运算。
逻辑运算符及其他
与或非运算:
boolean a = true; boolean b = false; System.out.println(a&&b); System.out.println(a||b); System.out.println(!a);
&&是短路与,前面的假了后面的就不执行了,试将以下代码的短路与&&换成非短路与&,观察c的值:
int c = 5; System.out.println((c<4)&&(c++<4)); System.out.println(c);
短路或||和非短路或|同理。
作为位运算符:
int A = 0b0000_1100; int B = 0b0011_1100; System.out.println(A&B); System.out.println(A|B); System.out.println(A^B);
A&B = 00001100 = 12,A|B = 00111100 = 60,A^B = 00110000 = 48。
即与、或、异或运算。
此外还有左移、右移:
System.out.println(2<<3); System.out.println(8>>2);
输出的结果是16、2。左移一位就是乘二,右移一位就是除以二,优点是效率极高。
字符串连接符:
System.out.println(""+1+2); System.out.println(1+2+"");
第一行输出是12,第二行输出是3。
因为加号两边有字符串会将整个结果变成字符串,所以第一行的结果是拼接好的字符串12,
第二行是先进行了加法运算再拼接成字符串。
三元运算符:
int a = 1; System.out.println("a="+a+(a%2==1?",这是奇数":",这是偶数"));
a ? b : c就是三元运算符的表达形式,即a为真就执行b,否则执行c,
所以以上代码中,根据a%2是否为1判断了a是奇数还是偶数,可以将a改成2进行测试。
当然了,这个效果一般用if关键词来完成。
包机制
包就是文件夹,用于区别类的命名空间。
一般使用公司域名倒置作为包名。
使用impact关键词可以导入其他包中的类。
想导入一个包下所有的类,只需要使用通配符 * 即可。
JavaDoc文档
使用文档注释可以用于生成JavaDoc文档:
/** * @author Rosemary * @version 1.0 * @since 1.8 * */ public class Demo08 { // JavaDoc文档 String name; /** * * @param name 传入的名字 * @return 返回名字 */ public String test(String name){ return name; } }
点击导航栏的Tool-生成JavaDoc,输入语言为zh_CN,并输入参数-encoding utf-8 -charset utf-8:
可以在生成的位置看到文档:
可以点进index.html看看。