JavaSE 基础部分笔记
Java基础 笔记
b站up主 遇见狂神说 的 java零基础课程 笔记整理
先来看看最普遍的项目建立方式
-
注释
-
单行注释
//
-
多行注释
/*
*/
-
文档注释 - JavaDoc
-
-
标识符
-
数据类型
-
强类型语言
要求变量的使用要严格符号规定,所有变量都必须先定义后才能使用
-
弱类型语言
不严格规定->js等,
-
-
Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
long num4= 30L;
float num5 = 50.1F;
# 这两种需要特别标识
Integer
# 这个ctrl加点击可以进入类的源码
字符串String并不在八大基本类型的范畴内
-
数据类型拓展及面试题讲解
整数拓展:进制
二进制 | 十进制 | 八进制 | 十六进制 |
---|---|---|---|
0b | 无 | 0 | 0x |
浮点数拓展:
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); # 输出为false
float f = 23333333333333333333f;
double d = f + 1;
System.out.println(f==d); # 输出为true
解释:float 有限且离散,有舍入误差,接近但不等于,这个应该和IEEE754标准下浮点数的精度问题类似
所以尽量避免使用浮点数进行比较
实际上上述f变小一些的话可以输出为false的
那么浮点数拓展? 银行业务怎么表示小数点?
BigDecimal 数学工具类
字符拓展
所有字符本质还是数字
编码 Unicode 表: (97 = a 65 = A) 2 字节 0-65536 U0000-UFFFF
char c1 = 'A';
char c2 = '中';
System.out.println(c1); # A
System.out.println((int)c1); # 强转类型,输出为65
System.out.println(c2); # 中
System.out.println(int)c2); # 强转类型,输出为20013
char c3 = '\u0061'
System.out.println(c3); # 输出为a
转义字符
\t 制表符 (空格)
\n 换行符
类型转换
主要就是强制类型转换
(类型)变量名
,即占字节更大的类型在与占字节更少的类型做运算时需要进行强转反之的话不用
变量
注意事项
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明必须以分号结束。
说起来String是引用数据类型,非八大基本数据类型之一
变量作用域
- 类变量
- 实例变量
- 局部变量
public class Variable{
static int allClicks = 0; // 类变量
String str = "Hello World!"; // 实例变量
public void method(){
int i = 0; // 局部变量
}
}
public class Demo8 {
// 类变量 static
static double salary = 2500;
// 属性:变量
// 实例变量:从属于对象;如果不自行初始化,这个类型默认值为0,0.0,null
// 布尔值:默认是false
// 除了基本类型,其余的默认值都是null;
String name;
int age;
//main 方法
public static void main(String[] args) {
// 局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
// 变量类型 变量名字 = new Demo08();
Demo8 example_demo08 = new Demo8();
System.out.println(example_demo08.age);
System.out.println(example_demo08.name);
}
}
常量
final 常量名 = 值;
final double PI = 3.14;
// 常量名一般常用大写字符
public class Demo9 {
static final double PI = 3.14;
// final static double PI = 3.14;
// 修饰符,不存在先后顺序->final
public static void main(String[] args) {
System.out.println(PI);
}
}
变量命名规范
类成员变量:首字母小写加 驼峰原则->除第一个单词外后面单词首字母大写
局部变量: 首字母小写加驼峰原则
常量:大写字母加下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man, GoodMan
方法名:首字母小写和驼峰原则:run(), runRun()
运算符
- 算数运算符:+, -, *, /, %, ++, --
- 赋值运算符:=
- 关系运算符:>, <, >=, <=, ==, instanceof
- 逻辑运算符:&&, ||, !
- 位运算符: &, |, ^, ~, >>, <<, >>>
- 条件运算符: ? :
- 扩展赋值运算符: +=, -=, *=, /=
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
// CTRL + D 复制当前行到下面一行
int a = 10;
int b = 15;
int c = 20;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b); // a,b都是int类型,2/3也会以int形式输出,即变为0
System.out.println(a/(double)b); // 强转一个类型,默认另一个也会能自动转的话也会自动转
}
}
记录一下经典的自增自减运算符吧
public class Demo02 {
public static void main(String[] args) {
// ++, -- 自增,自减一元运算符
int a = 3;
System.out.println(a); // 3
int b = a++; // 执行完这行代码后,先给b赋值,再自增
System.out.println(b); // 3
System.out.println(a); // 4
int c = ++a; // 执行完这行代码后,先自增,再给c赋值
System.out.println(a); // 5
System.out.println(b); // 3
System.out.println(c); // 5
}
}
然后就是幂运算,实际上是调用Math类,这个Math在idea中也可以通过CTRL + 鼠标左键查看源码
// 幂运算 2^3
double pow = Math.pow(2,3);
System.out.println(pow); // 8.0
逻辑运算符
&& : AND
|| : OR
! : NOT
public class Demo05 {
public static void main(String[] args) {
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); // false
System.out.println(c); // 5
// 这意味着AND运算符在第一个条件判错后就不再判断后一个条件了,因此c的自加运算并没有被执行
}
}
位运算
略,用的时候网上查吧
或者比如×2的倍数可以用<<
接近底层,效率高一些
扩展赋值运算符
同略 +=, -= ......
不过这儿还讲了个字符串连接符号
public class Demo06 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a + b); // 30
// 字符串连接符
System.out.println(""+a+b); // 1020
// 对照组
System.out.println(a+b+""); // 30
// 对照组
System.out.println(a+""+b); // 1020
}
}
只要“”不是在最后,+就不会正常运算,而是以字符形式输出
三元运算符
x ? y : z
如果 x == true, 返回y,否则返回z
运算优先级
包机制
为了防止命名重复,就和windows下的文件夹作用类似
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]]
正常公司开发都是域名倒置作为包名,如百度写成com.baidu.www
举个栗子
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用
import
语句就可以完成此功能
这样的话调用类就很方便了
比如我想调用
Date
这个类那么只用写:
import java.util.Date; // 如果想把util包下所有的java类都导入的话 import java.util.*; // 大功告成!
实际上idea里你用的时候可以双击直接帮你导入
和c的include很像噢
平常参考参考,本地放在E:\backup\specified_language\java目录下
JavaDoc
API文档:用以说明这些应用程序接口的文档,是在java语言中详细说明了每一个类,方法的功能以及用法等内容的文档。
开发一个大型软件时,需要定义成千上万的类,而且需要很多人参与开发。每个人都会开发一些类,并在类里面定义一些方法,成员变量提供给其他人使用。但其他人怎么知道如何使用这些类和方法呢? 这时候就需要提供一份说明文档,用于说明每个类,每个方法的用途。当其他人使用一个类或者一个方法时,他无需关系这个类或者方法的具体实现,只需要知道这个类或者方法的功能即可,然后使用这个类或者方法来实现具体的功能,也就是通过调用应用程序接口(API)来编程。API文档就是用以说明这些应用程序接口的文档。对于java语言而言,API文档通常详细的说明了每一个类,方法的功能以及用法等。
javadoc命令是用来生成自己的API文档的
举个栗子
/**
* @author JasonZhu
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
* @author JasonZhu
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
那么就会有同学问了
(滑稽),这个javadoc和正常的注释有啥区别呢?
答:可以用
javadoc
生成对应的API文档!
然后在对应文件下打开cmd,输入javadoc ......
那么如何用IDEA生成JavaDoc文档呢?
答:万能的百度->IDEA生成JavaDoc文档
总结一下的话就是用IDEA的TOOL里面的Generate JavaDoc,稍微选择一下配置
妙哉!Java基础部分就到这了!