学习课程来源:【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili
注释
注释并不会被执行。
Java中的注释:单行注释、多行注释、文档注释。
public class Hello {
public static void main(String[] args){
//单行注释 //
//这是单行注释,可以注释一行文字
//输出一个Hello,World!
System.out.println("Hello,World!");
//多行注释 /* */
/*
这是多行注释,可以注释一段文字
*/
//文档注释 /** */
/**
*这是文档注释
*@Description HelloWorld
*@Author Java
*/
}
}
标识符和关键字
标识符
关键字:
| abstract | assert | boolean | break | byte |
|---|---|---|---|---|
| case | catch | char | class | const |
| continue | default | do | double | else |
| enum | extends | final | finally | float |
| for | goto | if | implements | import |
| instanceof | int | interface | long | native |
| new | package | private | protected | public |
| record | return | strictfp | short | static |
| super | switch | synchronized | this | throw |
| throws | transient | try | void | volatile |
| while |
Java所有的组成部分都需要名字。
类名、变量名以及方法名都被称为标识符。
标识符注意点
所有的标识符都应该以字母(A-Z或者a-z),美元符号($),或者下划线(_)开始。
首字符之后可以是字母(A-Z或者a-z),美元符号($),下划线(_)或者数字的任何字符组合。
不能使用关键字作为变量名或方法名。
Java是强类型语言,标识符大小写敏感。
可以使用中文命名,但是不建议。
数据类型
强类型语言:要求变量的使用严格符合规定,所有变量要先定义后使用。安全性高,速度慢。
弱类型语言
Java数据类型:基本类型(primitive type)、引用类型(reference type)
public class Demo02 {
public static void main(String[] args) {
String a = "hello";
int num = 10;
System.out.println(a);
System.out.println(num);
//八大基本数据类型
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //Long类型要在数字后面加L
//浮点数:小数
float num5 = 50.1F; //float类型要在数字后面加F
double num6 = 3.1415926;
//字符
char name = 'A';
//字符串 String不是关键字,而是类
String namea = "名字";
//布尔值 是非
boolean flag = true;
boolean flag1 = false;
}
}
位(bit):计算机内部数据存储的最小单位。
字节(byte):计算机中数据处理的基本单位。习惯上用大写B表示。
1B(字节) = 8bit(位),1024B = 1KB,1024KB = 1M,1024M = 1G
字符:计算机中使用的字母、数字、字和符号。
32位的操作系统只可以用32位的CPU,64位的操作系统可以用32位的CPU,也可以用64位的CPU。
数据类型扩展
最好完全避免使用浮点数进行比较
所有的字符本质还是数字
Less is More,代码要精简易读
public class Demo03 {
public static void main(String[] args) {
//整数扩展:进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x 0-9 A-F
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("----------------------------------");
//--------------------------------
//浮点数扩展:银行业务怎么表示 BigDecimal数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f);
System.out.println(d);
System.out.println(f==d); //false
float d1 = 2324444323232f;
float d2 = d1 + 1;
System.out.println(d1==d2); //true
System.out.println("----------------------------------");
//--------------------------------
//字符扩展:所有的字符本质还是数字
//编码 Unicode 2字节 65535个字符 97对应a,65对应A
//u0000 iFFFF
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
char c3 = '\u0061';
System.out.println(c3); //a
//转义字符 \t制表符 \n换行
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
System.out.println("----------------------------------");
//--------------------------------
String sa = new String("hello world");
String sa1 = new String("hello world");
System.out.println(sa==sa1); //false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd); //true
//对象 从内存分析
System.out.println("----------------------------------");
//--------------------------------
//布尔值扩展
boolean flag = true;
if (flag==true){
}
if (flag){ //两种方式意思一样
}
}
}
类型转换
Java类型转换有自动转换、强制转换
自动转换
低容量->高容量
byte,short,char->int->long->float->double
运算中,不同类型的数据先转化为同一类型,然后进行运算。
强制转换
高容量->低容量
格式:(类型)变量名
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 把高容量转换到低容量时要强制转换,转换时可能存在内存溢出或精度问题
public class Demo05 {
public static void main(String[] args) {
int i = 128;
//强制转换 (类型)变量名
byte b = (byte)i;
System.out.println(i);
//内存溢出
System.out.println(b);
System.out.println("--------------");
//精度问题
System.out.println((int)23.7); //23
System.out.println((int)-45.89f); ///-45
System.out.println("--------------");
char c = 'a'; //97
//自动转换
int d = c + 1;
System.out.println(d); //98
//强制转换
System.out.println((char)d); //b
}
}
扩展
当操作值比较大的数时,注意溢出问题
JDK7新特性:数字之间可以用下划线(_)分割
public class Demo06 {
public static void main(String[] args) {
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
//计算时溢出
int total = money * years;
System.out.println(total); //-1474836480
long total2 = money * years; //计算完后是int,已经存在问题,转换后仍然有问题
System.out.println(total2); //-1474836480
long total3 = money * (long)years; //计算完后是long,没有问题
System.out.println(total3); //20000000000
}
}
变量、常量、作用域
变量
变量是可以变化的量。
Java是一种强类型语言,每个变量必须声明类型。
Java变量是程序中最基本的存储单元,变量要素包括变量名,变量类型和作用域。
格式:一行可以定义多个变量,但是不建议(程序可读性)
type varName = [value][{,varName[=value]}];
注意点:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明必须以分号(;)结束。
public class Demo07 {
public static void main(String[] args) {
//int a,b,c; //不建议,且没有初始化
//int a1,b1,c1; //不建议
//程序可读性
int a3 = 1;
int b3 = 2;
int c3 = 3;
String name = "qin";
char x = 'x';
double pi = 3.14;
}
}
变量的命名规范:
- 所有变量、方法、类名要见名知意。
- 类成员变量要符合首字母小写和驼峰原则,如monthSalary。
- 局部变量要符合首字母小写和驼峰原则。
- 常量要符合大写字母[和下划线],如PI、MAX_VALUE。
- 类名要符合首字母大写和驼峰原则,如Man、GoodMan。
- 方法名要符合首字母小写和驼峰原则,如run()、runRun()。
作用域
类变量、实例变量、局部变量
public class Variable{
static int allClicks = 0; //类变量
String str = "hello world"; //实例变量
public void method(){
int i = 0; //局部变量
}
}
1.类变量
类变量有static关键字,从属于类。
2.实例变量
实例变量在方法的外面,类的里面。
实例变量从属于对象,通过类来使用实例变量。
实例变量如果不自行初始化,默认值为这个变量类型的默认值。
- 整型默认值为0
- 浮点型默认值为0.0
- 字符型默认值为0
- 布尔值默认值为false
- 除了基本类型,其余的类型默认值都为null
3.局部变量
局部变量使用之前必须声明和初始化值。
局部变量的作用范围在{}内。
public class Demo08 {
//属性/变量
//类变量
static double salary = 2500; //int自动转换为double
//实例变量
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量
int i = 10;
System.out.println(i); //10
//变量类型 变量名 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age); //0
System.out.println(demo08.name); //null
System.out.println(salary); //2500.0
}
//其他方法
public void add(){
}
}
常量
常量是初始化后不能再被改变的值。
常量可以理解为一种特殊的变量,值被设定后,在程序运行过程中不允许被改变。
格式:常量有final关键字,常量名一般使用大写字母表示
final 常量名 = 值;
static、final这些修饰符不区分先后顺序
public class Demo09 {
static final double PI = 3.14;
final static double R = 3.2;
public static void main(String[] args) {
System.out.println(PI);
System.out.println(R);
}
}
运算符
算术运算符:
- +、-、*、/
- %(取余/模运算)
- ++(自增)、–(自减)
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); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/b); //0 应该是0.5,但是是int型,所以为0
System.out.println(a/(double)b); //0.5 强制转换为double
//取余/模运算
System.out.println(c % a); //5 过程:c / a = 25 / 10 = 2 ... 5,余数为5
}
}
public class Demo04 {
public static void main(String[] args) {
//一元运算符:++ 自增 -- 自减
int a = 3;
int b = a++; //a++ 即 a = a + 1。执行完这行代码后,先给b赋值,再自增
//隐藏了一段代码:a = a + 1;
System.out.println(a); //4 说明a++执行完的下一句a才会加1
//隐藏了一段代码:a = a + 1;
int c = ++a; //执行完这行代码后,先自增,再给c赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
}
}
赋值运算符:=
关系运算符:计算结果为布尔值,值只有true和false两种
- >、<、>=、<=、==、!=
- instanceof(判断一个对象是否是一个类的实例)
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回结果为true或false
int a = 10;
int b = 20;
int c = 21;
System.out.println(a > b); //false
System.out.println(a < b); //true
System.out.println(a == b); //false
System.out.println(a != b); //true
}
}
逻辑运算符:
- &&(与:两个变量都为true,结果才为true)
- ||(或:两个变量有一个为true,结果就为true)
- !(非:如果为true,则变为false;如果为false,则变为true)
public class Demo05 {
public static void main(String[] args) {
//逻辑运算符
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
//逻辑与运算:两个变量都为true,结果才为true
System.out.println("a && b:"+ (a && b)); //false
//逻辑或运算:两个变量有一个为true,结果就为true
System.out.println("a || b:"+ (a || b)); //true
//逻辑非运算:如果为true,则变为false;如果为false,则变为true
System.out.println("!(a && b):"+ !(a && b)); //true
//短路运算
int c = 5;
boolean d = (c < 4) && (c++ < 4); //c < 4的结果为false,后面不再执行,结果直接为false
System.out.println(d); //false
System.out.println(c); //5 说明没有执行c++ < 4
}
}
位运算符:
- &(一位一位的计算,对应位都为1才为1)
- |(一位一位的计算,对应位都为0才为0)
- ^(一位一位的计算,对应位相同为0,不同为1)
- ~(一位一位的计算,每个位取反)
- <<、>>>(了解)
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A & B(一位一位的计算,对应位都为1才为1) 0000 1100
A | B(一位一位的计算,对应位都为0才为0) 0011 1101
A ^ B(一位一位的计算,对应位相同为0,不同为1) 0011 0001
~B(一位一位的计算,每个位取反) 1111 0010
*/
/*
2 * 8 = 16 2 * 2 * 2 * 2
<< 把数字往左移几位,数字变大,相当于 * 2
>> 把数字往右移几位,数字变小,相当于 / 2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
0001 1000 24
*/
System.out.println(2 << 3); //16 2 * 2 * 2 * 2
System.out.println(3 << 3); //24 3 * 2 * 2 * 2
}
}
条件运算符:x ? y:z(如果x==true,则结果为y,否则结果为z)
public class Demo08 {
public static void main(String[] args) {
//三元运算符
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
}
}
扩展赋值运算符:+=、-+、*=、/=
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a + b
System.out.println(a); //30
a-=b; //a = a- b
System.out.println(a); //10
//字符串连接符 +,String
System.out.println(a+b); //30
System.out.println(""+a+b); //String类型的1020
System.out.println(a+b+""); //String类型的30
}
}
注意点:
-
运算结果的数据类型为参与运算的变量中最高容量的数据类型。
-
在java中,整数默认是int类型,小数默认是double类型。
public class Demo02 { public static void main(String[] args) { long a = 121346756723L; 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 } } -
关系运算符可以与if搭配使用。
-
扩展:很多运算会使用工具类来操作,如幂运算。
public class Demo04 { public static void main(String[] args) { //幂运算 2的3次方 2*2*2 = 8 //很多运算会使用工具类来操作 double pow = Math.pow(2,3); System.out.println(pow); //8.0 } } -
优先级 运算符 简介 结合性 1 [ ]、.、( ) 方法调用,属性获取 从左向右 2 !、~、 ++、 – 一元运算符 从右向左 3 * 、/ 、% 乘、除、取模(余数) 从左向右 4 + 、 - 加减法 从左向右 5 <<、 >>、 >>> 左位移、右位移、无符号右移 从左向右 6 < 、<= 、>、 >=、 instanceof 小于、小于等于、大于、大于等于, 对象类型判断是否属于同类型 从左向右 7 == 、!= 2个值是否相等,2个值是否不等于。 下面有详细的解释 从左向右 8 & 按位与 从左向右 9 ^ 按位异或 从左向右 10 | 按位或 从左向右 11 && 短路与 从左向右 12 || 短路或 从左向右 13 ?: 条件运算符 从右向左 14 =、 += 、-= 、*= 、/=、 %=、 &=、 |=、 ^=、 <、<= 、>、>= 、>>= 混合赋值运算符 从右向左
包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
包的本质就是文件夹。
格式:
package pkg1[. pkg2[. pkg3...]];
一般利用公司域名倒置作为包名。
为了能使用某一个包的成员,需要在Java程序中明确导入该包,使用“import”语句可以完成。格式:*表示通配符,导入这个包里的所有类
import package1[.package2.(classname|*);
《阿里巴巴开发手册》
JavaDoc
javadoc命令是用来生成自己的API文档
jdk帮助文档
使用cmd生成JavaDoc文档
格式:javadoc 参数 Java文件
/**
* @author zhi
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
* @author zhi
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
步骤:
-
右键类->Open In->Explorer

-
在打开的文件夹地址栏开头输入cmd(空格)->回车
-
输入javadoc -encoding UTF-8 -charset UTF-8 Doc.java->回车
使用IDEA生成JavaDoc文档
可参考:使用IDEA生成JavaDoc文档(IDEA2020.3.2)_idea快捷键将所有javadoc注释转为读模式-CSDN博客
3627

被折叠的 条评论
为什么被折叠?



