1、Java基础
-
注释
/** * 测试类,用于测试java基础中的内容 */ public class MyTest { @Test public void CommentTest(){ //输出语句,System.out是一个PrintStream对象,该对象有一个方法println可以将字符串打印到控制台 System.out.println("Hello World!"); /* 初始化语句,定义一个整型变量 赋初值为10 */ int a = 10; } } //java中一共有三种注释 // x 单行注释 /* x */ 多行注释 /** x */ 文档注释 //注释的作用 1.解释说明代码含义 2.简单的调试
-
标识符
#java中所有需要命名的地方都是标识符 #1.命名规则 标识符的组成是字母、数字、下划线、$,且数字不能开头 不能使用关键字作为标识符来命名 java严格区分大小写,String跟string不同 #2.命名规范 见名知意 包名:全小写,.来隔开 类名:首字母大写 变量和方法名:第一个单词全小写,其余单词首字母大写 常量:全大写,单词之间用下划线隔开
-
关键字
#关键字是java自用的标识符,有其特殊的含义
-
数据类型
@Test public void TypeTest(){ //java是一门强类型语言,所有变量都必须先定义后使用,变量类型跟变量值要严格匹配 int num = 10; System.out.prinln(num); //这就是一条错误的定义语句,String表示该变量str是一个字符串类型,而10是一个整型变量 //String str = 10; //这才是正确的String类型变量定义 String str = "Hello"; }
#java中一共有两大类型 #1.基本类型 整型:byte、short、int、long 浮点型:float、double 布尔型:boolean 字符型:char #2.引用类型 字符串(本质是class类型):String #注释:除了基本类型之外的数据类型都是引用类型,其他的后面再学,先学一个String字符串 #3.整型 #用于存储整数,默认整数是int类型,long类型数值赋值时需要后缀L/l byte 1个字节来存储 存储范围:-128~127 short 2个字节来存储 存储范围:-32768~32767 int 4个字节来存储 存储范围:-2^31到2^31-1 long 8个字节来存储 存储范围:-2^63到2^63-1 #注释:计算机最小单元是一个bit(二进制位),一个byte(字节)是8个bit #4.浮点型 #用于存储小数,默认小数是double类型,float类型数值赋值时需要后缀F/f float 4个字节来存储 double 8个字节来存储
#浮点型数据跟整型不同,存储格式是符号位+幂指数为+数值位,因此即便是4个字节的float存储范围也比8个字节的long要大 #5.布尔型 #用于表示正确还是错误,只有两个值true和false,不能参与运算 boolean 1一个二进制位来存储 #6.字符型 #用来存储单个字符,定义方式: char c = '张'; char 2个字节来存储 #注释:java采用的是Unicode编码,因此字符型的底层是16位无符号整数,存储范围:0 ~ 65535 #7.自动类型提升 #byte < short < int < long < float < double #char < int < long < float < double #char、byte、short类型不需区分范围的大小 小类型数据可以直接赋值给大类型数据,例如: int a = 10; double b = a; #上述代码就是合法的 #8.强制类型转换 #若出现大类型数据赋值给小类型数据,必须进行强转,此时是基本类型,先不考虑类型转换异常的问题 double b = 20; int a = (int)b; #上述代码也是合法的 #必须通过 (想要转向的数据类型)+变量 这种方式才能将大类型数据赋值给小类型数据 #不过此时会有一些弊端,比如精度丢失、数据转换无意义等,例如 double a = 10.1; int b = (int) a; #此时b的值等于10,小数点后的数值直接被截取掉 int a = 300; byte b = (byte) a; #此时b的值等于44,300的二进制数值从后往前截取8位的结果就是44 #9.运算中的类型提升 #小类型数据跟大类型数据运算会得到大类型数据 #byte、short、char运算例外,结果是int类型,因为不能确定他们的运算结果是否会超过本身数据类型的存储范围 #但是有两种特殊情况: #情况1: byte a = 10; a+=10; byte b = a; #上述代码是合法的,+=不会改变变量的数据类型,因此a还是byte类型而没有提升为int类型,-=,*=等复合运算同理 #情况2: byte a = 1; byte b = 2; byte c = 1 + 2; //byte d = a + b; #注释:第四行就是错误语句,因为当1+2时,Java能够确定此时运算的结果没有超出byte的范围,但是两个byte变量Java确定不了 #10.字符串类型 #用来表示一串字符,定义方式: String str = "张三丰"; #String类型不是基本类型,因此他不能与基本类型进行计算,但是可以通过'+'来拼接基本数据类型称为新字符串 String a = "hello"; String b = "hello"; a==b; String a = new String("hello"); String b = new String("hello"); a!=b #注释:两个字符串常量是相等的,但是同一字符串常量创建的String类型的对象却不相等 #原因:字符串常量存储于常量池中,同一字符串只有一份;而String对象存储于堆区,每new一次就创建一个,他们的地址不同
拓展1:可以去网上看看关羽进制的帖子,2进制,8进制,10进制,16进制的表示和互相转换。
拓展2:浮点型数据,存在精度误差问题,此问题的原因是为了能够做到快速计算特意精心设计的,如果需要完全精确计算,例如货币,可以使用BigDecimal这个类去表示数据
-
变量
#1.变量名 符合标识符命名规则和规范 #2.变量类型 变量的定义: int a = 10; char c = 'm'; String str = "张三丰"; #每个变量的定义都会声明其数据类型,因此变量其实就是固定大小内存的别名,其大小就是由其数据类型决定 #3.变量作用域 变量的作用域是他出生的大括号内,此时学到的变量都称为局部变量,还有实例变量,类变量,后面再说
-
常量
#使用关键字final修饰的变量就是常量 final int A = 10; final double PI = 3.14; #常量一经赋值不能修改
-
运算符
#表达式的具体含义与数学无异,就不再赘述 #1.算数运算符 + 加 - 减 * 乘 / 除 % 模(取余) #注意:java中的整型除法是整除,需要小数结果要强转为double再去算 #2.赋值运算符 = 赋值 #3.比较运算符 > 大于 < 小于 >= 大于等于 <= 小于等于 == 等于 != 不等于 instanceof(暂时不用记住,混个眼熟) #4.位运算符(略) #5.逻辑运算符 && 短路与(与就用这个) || 短路或(或就用这个) ! 非 & 非短路与 | 非短路或 #短路与非短路的区别就是,一旦整体表达式成立,短路符号后面的子表达式就不再继续运算,而非短路符号后面的子表达式还要继续运算 #6.条件表达式 exp ? a : b #exp的结果如果为true,则执行a表达式,否则执行b表达式 #7.复合运算符 += -+ *= /= %= #这就是为了偷懒用的,例如: int a = 10; a+=10; System.out.println(a); #输出结果为20,a+=10 相当于 a = a + 10; #8.自增自减 ++a --a a++ a-- #a++先让a+1再参与表达式运算,++a先让a参与表达式运算再给a+1,--同理
-
包机制
#1.包的概念 包等同于文件夹 #2.包的作用 包可以分别管理不同类别的类 非同包中类可以同名 #原因:与类的加载机制有关,在java中,类的全限定名(包名+类名)是类的唯一标识,因此可以创建不同包的同名类 #3.包的使用 先创建package包 在包下创建class类
-
JavaDoc
#java相较于其他的高级语言多了一个文档注释 #1.文档注释的作用 标注一个类、方法的属性 #2.如何查看文档注释的结果 打开命令行窗口 输入javadoc xxx.java idea=>Tools=>Generate JavaDoc也可以生成 #3.文档注释的参数 @author 作者 @version 版本 @since 最早可用的jdk版本 @param 形参 @return 返回值 @throws 异常