此文章为学习【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili所写笔记。基础部分。
Java三大版本
1.JavaSE:标准版(桌面开发,控制台开发…)
2.JavaME:嵌入式开发(手机,小家电…)
3.JavaEE:企业级开发(web端,服务器开发…)
HelloWorld!
(ps此为jdk在cmd中进行编译运行)
-
随便建一个文件夹用来存放代码
-
在里面建一个Java文件
- 文件后缀名为.java
- 文件名为Hello.java
-
在里面编写代码(右键用note+++打开/txt文本编辑器打开)
public class Hello { public static void main(String[] args) { System.out.print("Hello,World!"); } }
-
保存,并编译javac java文件所属地打开cmd验证编码正误
-
输入javac Hello.java回车即可若无错误
-
在后面输入java Hello
-
常出的错误
- java大小写错误
- 尽量使用英文和英文字符
- java编码输入错误
- 文件名和类名必须保证一致(文件名为Hello.java,类名定义public class Hello)
Java基础.1注释
关于注释:
1.注释并不会被执行。
2.书写注释是很好的习惯。
3.注释可以帮助我们更好地梳理与理解所写内容。
4.写代码要注意规范,规范意识会给我们带来不一样的收获。
Java中的注释有三种:
1.单行注释 //注释 //
2.多行注释 / *注释 * /
3.文本注释 //JavaDoc /* *注释 */
Java基础.2关键字和标识符
关键字:
- Java 常用关键字如下,这些关键字不可用于常量、变量、和任何标识符的名称。
标识符:
Java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符
标识符注意点:
-
所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
-
首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
-
关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary、#abc
- 也可使用中文/拼音来命名一般不建议使用
Java基础.3数据类型
强类型语言:
- Java是强类型语言,要求变量的使用要严格符合规定,所有的变量必须先定义后使用。
Java的数据类型分为基本类型和引用类型
基本类型:
-
数值类型
-
整数类型:
-
int:4个字节,-2 ^ 31 ~ 2 ^ 31-1,例如:int a = 100000, int b = -50000。
-
short:2个字节,-2 ^ 15~2 ^ 15-1,例如:short s= 1000,short r = -200。
-
long:8个字节,-2 ^ 63~2 ^ 63-1, long a = 100000L,long b= -60000L。
-
type:1个字节,-2 ^ 7 ~ 2 ^ 7-1,例如:byte a=10,byte b=-10。
-
-
浮点类型:
- float: 4个字节 (单精度),例如: float f = 234.5。
- double 8个字节 (双精度),例如:double d= 8.0。
-
字符类型
- char:两个字节
- boolean类型 占1位其值只有true和false(0和1)
引用类型:
- 类
- 接口
- 数组
-
字节和进制:
- 位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示,
1B(byte,字节)= 8bit(位)。 - 字符:是指计算机中使用的字母、数字、字和符号。
单位进制:
1bit表示1位
1Byte表示一个字节1B=8b;
1024B = 1KB
1024KB = 1M
1024M = 1G
Java基础.4数据类型拓展
1.整形拓展:
- 十进制整数,如:99,-500,0;例如:int i = 99;
- 八进制整数,要求以0开头,如:015;例如:int i = 015;
- 十六进制数,要求0x或0X开头,如:0x15;例如: int i = 0x15;
2.浮点数拓展:
- 一般默认为double;
- 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
- 要尽量避免比较中使用浮点数(能避免就避免)例如:float f = 0.1f;double d = 1.0;
3.字符型拓展:
- 单引号用来表示字符常量。例如==‘A’是一个字符,而“A”==表示一个字符串。
- char 类型用来表示在Unicode编码表中的字符。(ps:关于Unicode的简介:如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言)
- Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;例如:char c1 = ‘a’; char c2 = ‘中’;
java一些常用的转义字符:
符号 | \n | \r | \b | \s | \t | \” | \’ | \ \ |
---|---|---|---|---|---|---|---|---|
字符含义 | 换行 | 回车 | 退格 | 空格 | 制表符 | 双引号 | 单引号 | 反斜杠 |
4.布尔型拓展:
-
boolean类型 其实就是0/1。
-
boolean类型有两个值,true和false。
(ps:这里与C语言有所不同,即不能用0 或非 0 的整数替代 true和false 。)
-
boolean 类型用来判断逻辑条件,多用于程序流程控制。
-
例如:boolean flag = false;
if(flag){ // true分支 }else{ // false分支 }
Java基础.5类型转换
- 由于Java是强类型语言,所以进行有些运算时需要进行类型转换
强制转换 (类型)变量名
1.自动类型转换:
-
自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。
-
由低到高 byte,short,char—> int —> long—> float —> double
2.强制类型转换:
- 强制类型转换,又被称为造型,用于显式的转换一个数值的类型.(由高到低)
隐含强制转换:
- 可能的默认类型是int。
- 小数默认是双精度浮点型double,在定义浮点类型时必须在数字下面跟上 F 或者 f。
类型转换注意:
- long类型使用大写L不要用小写。
- 不能把布尔值进行转换。
- 不能把对象类型转换为不相干的类型 。
- 在把高容量转换到低容量的时候,强制转换 。
- 转换的时候可能存在内存溢出,或者精度问题。
拓展
①JDK7新特性: 二进制整数
JDK7为我们直接提供了二进制整数的类型。以0b开头即可。
//例如:int a = 0b0101:
②JDK7新特性:下划线分隔符
//例如:int b = 1_2345_6789;
根据特性,我们能够很容易地知道这是1亿2345万6789。
Java基础.6变量、常量、作用域
1.变量
- 变量是什么:就是可以变化的量。
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的储存单元,其要素包括变量名,变量类型和作用域。
- Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型。
变量的定义:
- 变量定义的格式包括三个要素: 数据类型 、 变量名 、 数据值 。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名=值;可以使用逗号隔开来声明多个同类型变量。
格式:
// 声明变量并赋值
//数据类型 变量名 = 数据值;
int age = 18;
System.out.println(age);
也可以先声明,后赋值(使用前赋值即可)
//数据类型 变量名;
//变量名 = 初始化值;
double money;
money = 55.5;
System.out.println(money);
变量的命名规范:
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声名必须是一条完整的语句,因此每一个声明都必须以分号结束。
package base;
public class Demo04 {
public static void main(String[] args) {
//int a,b,c;
//int a=1,b=2,c=3;//这样写不好,尽量一行一行的写,避免一行定义多个值。
//程序可读性要让大家尽量看得懂
String name ="lph";//String是一个引用类型
char x='X';//格式:变量类型 变量名字 = '值'
double pi =3.14;
}
}
变量的初始值:
- 所有的数值类型初始化,一般是0 0.0 u00000
- 布尔值:默认是false
- 除了基本类型,其余的默认值都是null;
package base;
public class Demo05 {
//属性:变量
//实例变量:从属于对象;可以理解为从属于一个类,它很高级.如果不自行初始化,然后就会变成这个类型的默认值。
String name;
int age;
//类变量 static(关键字)从属于类
static double salary = 2500;
//main方法
public static void main(String[] args) {
//局部变量是在方法里面的;必须声明和初始化值
int i=10;
System.out.println(i);
// new一个Dome05,相当于把这类拿到了
//自定义类型也是引用类型
//格式:变量类型 变量名字=new Dome05();
Demo05 demo05 = new Demo05();
System.out.println(demo05.age);
//类变量 static(关键字)从属于类
System.out.println(salary);
}
//其它方法
public void add(){
System.out.println();
}
}
变量作用域:
- 类变量(写在类里面的)
- 实例变量(写在类中间)
- 局部变量(写到方法里面)
public class Variable{
static int allClicks=0;//类变量
String str="hello world";//实例变量
public void method(){
int i=0;//局部变量 }
}
2.常量
- 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名=值;final double PI=3.14;
- 常量名一般使用大写字符。
修饰符,不存在先后顺序
在程序中使用一些常量可以提高代码的可读性。
Java基础.7运算符
运算符优先级:
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
1.基本运算符:
- 运算符和表达式
- 运算符:对常量或者变量进行操作的符号
- 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
算数运算符:
- +:是运算符,并且是算术运算符。
- a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。
算数运算符 | 作用 |
---|---|
+ | 加法运算,字符串连接运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算,两个数字相除取余数 |
Java中,整数使用以上运算符,无论怎么计算,也不会得到小数。
public static void main(String[] args) {
int i = 1234;
System.out.println(i/1000*1000);//计算结果是1000
}
符号在字符串中的操作:
- 符号在遇到字符串的时候,表示连接、拼接的含义。
- “a”+”b”的结果是“ab”,连接含义
赋值运算符:
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a×b的值给a |
/= | 除后赋值 | a/=b,将a÷b的商给a |
%= | 取余后赋值 | a%=b,将a÷b的余数给a |
- 赋值运算符,就是将符号右边的值,赋给左边的变量。
public static void main(String[] args){
int i = 5;
i+=5;//计算方式 i=i+5 变量i先加5,再赋值变量i
System.out.println(i); //输出结果是10
}
- +=符号的扩展
public static void main(String[] args){
short s = 1;
s+=1;
System.out.println(s);
}
分析: s += 1
逻辑上看作是 s = s + 1
计算结果被提升为int
类型,再向short
类型赋值时发生错误,因为不 能将取值范围大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算
, +=
是一个运算符,只运算一 次,并带有强制转换的特点,也就是说 s += 1
就是 s = (short)(s + 1)
,因此程序没有问题编译通过,运 行结果是2
自增自减运算符:
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
– | 自减 | 变量的值减1 |
独立运算:
- 变量在独立运算时, 前++ 和 后++ 没有区别 。
- 变量 前++ :例如 ++i 。
- 变量 后++ :例如 i++ 。
- 混合运算:
- 和其他变量放在一起, 前++ 和 后++ 就产生了不同
- 变量 前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。
public static void main(String[] args) {
int a = 1;
int b = ++a;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是2
}
变量 后++
:变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a 的结果是2,b的结果是1
public static void main(String[] args) {
int a = 1;
int b = a++;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是1
}
逻辑运算符:
符号 | 含义 |
---|---|
&& | 与(有假即假,两真才真) |
|| | 或(有真即真,两假才假) |
! | 非 |
位运算符:
运算符 | 含义 | 实例 | 结果 |
---|---|---|---|
& | 按位进行与运算(AND) | 4 & 5 | 4 |
| | 按位进行或运算(OR) | 4 | 5 | 5 |
^ | 按位进行异或运算(XOR) | 4 ^ 5 | 1 |
~ | 按位进行取反运算(NOT) | ~ 4 | -5 |
位与运算符&
,其运算规则是:参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位同时为 1,那么计算结果才为 1,否则为 0。因此,任何数与 0 进行按位与运算,其结果都为 0。
位或运算符|
,其运算规则是:参与运算的数字,低位对齐,高位不足的补零。如果对应的二进制位只要有一个为 1,那么结果就为 1;如果对应的二进制位都为 0,结果才为 0。
位异或运算符^
,其运算规则是:参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1。
位取反运算符~
,其运算规则是:只对一个操作数进行运算,将操作数二进制中的 1 改为 0,0 改为 1。
位移运算符:
运算符 | 含义 | 实例 | 结果 |
---|---|---|---|
» | 右移位运算符(指哪往哪) | 8»1 | 4 |
« | 左移位运算符 | 9«2 | 36 |
口诀:左移×2,右移÷2(奇数-1)
条件运算符:
Java 提供了一个特别的三元运算符(也叫三元运算符)经常用于取代某个类型的 if-then-else 语句。条件运算符的符号表示为“?:”,使用该运算符时需要有三个操作数,因此称其为三元运算符。使用条件运算符的一般语法结构为:
bollean b= 40<50 ? true : false;
以上代码用if else实现
bollean a;
if(40<50)
a=true;
else
a=false;
例:输入小明的成绩,如果高于95分,则为优秀,否则成绩良好
代码实现:
import java.util.Scanner;
public class Test_xm {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int test = 0;
String a=(int)test>95 ? "优秀":"一般";
System.out.println("请输入小明测试的成绩");
test = input.nextInt();
System.out.println("小明的成绩等级为:"+a);
}
}
Java基础.8包机制和Javadoc
包机制:
为了更好的组织类,java提供了包机制,用于区别类名和调用其他的包中的类。
-
定义包
格式:package pkg1[.pkg2.[……]]
如:package com.kuang.Scanner;
-
导入包
格式:import package pkg1[.pkg2.[…]]如:import java.util.Scanner;
通配符:.*
import com.kuang.base.*;(导入这个包下所有的类)
Javadoc:
/** + 回车.自动生成参数信息
@author 作者
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
在文件位置输入 cmd 打开命令控制符
输入 javadoc -encoding UTF-8 -charset UTF-8 Doc.java回车
index.html即为生成的文档
使用IDEA生产javadoc文档:
项目->右键->点击Open in->点击Explorer
输入cmd打开
输入:javadoc -encoding UTF-8 -charset UTF-8 Doc.java
我们就可以看到文件夹生成了许多东西,然后点击index.html就可以查看了