狂神说Java基础笔记
Java基础语法
注释
-
平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。
-
注释并不会被执行,是写给我们写代码的人看的
-
书写注释是一个非常好的习惯
-
Java中注释有三种:
单行注释:
//后面加文字
多行注释:
/*加文字*/
JavaDos(文档注释):
/**
*文字
*/
标识符和关键字
-
关键字
-
标识符注意点
1.所有的标识符都应该以字母(A~Z或a~z),美元符($)或者下划线(_)开始
2.首字符之后可以是字母,美元符、下划线或数字的任何字符组合
3.不能使用关键字作为变量名或方法名
4.标识符是大小写敏感的
合法标识符举例:age、$salary、_value、
__1value
非法标识符举例:123abc、-salary、#abc
-
*可以使用中文名,但是一般不建议这样去用,也不建议使用拼音,很low
例子(字符串命名):
String 王者荣耀 ="百星王者"
数据类型
-
强类型语言(强类型定义语言):要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。安全性高,运行速度慢。
-
弱类型语言(弱类型定义语言) :与强类型定义相反
八大基本数据类型
//八大基本数据类型
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //Long类型要在后面加个L
//浮点数
float num5 = 50.1F;//Float类型要在后面加个L
double num6 = 3.1415926;
//字符(只能填一个字)
char name = ‘A’;
//布尔值(代表是非,注:下面只是演示flag是名字并且也不能重名)
boolean flag = ture;
boolean flag = false;
除了上面的八大基本类型都是引用类型。例:
//字符串(注:String不是关键字而是类)(引用类型)
string namea = "字符串";
贴心科普:什么是字节
-
位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。
-
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示,1B(byte,字节)=8bit(位)
-
字符:是指计算机中使用的字母、数字、字和符号
1bit表示1位 1byte表示一个字节1B=8b(bit) 1024B=1KB 1024KB=1M 1024M=1G
数据类型扩展
整数拓展
-
二进制:0b ;十进制 ;八进制:0 ;十六进制:0x(10~15用A~F表示)
int i1 = 10; //10
int i2 = 010; //8
int i3 = 0x10; //16
浮点数拓展
-
用flout和double表示的字长是有限的也是离散的浮点数存在舍入误差,因为很多数字无法精确表示所以用大约数表示,所以最好完全避免使用浮点数进行比较。
注:System.out.println(d1==d2)中==代表判断是否相等
字符拓展
-
所有的字符本质还是数字
char c1 ='a';
char c2 ='中';
System.out.println(c1);
System.out.println((int)c1);//强制转换把字母转换成数字
System.out.println(c2);
System.out.println((int)c2);//强制转换把中文转换成数字
-
编码Unicode(例:表中97=a,65=A)可以处理各种语言文字占2字节最多可以表示65536个字符,最早的Excel表格最长只有2的16次方(65536)
Unicode通过转译表示U0000~UFFFF
char c3 = '\u0061';
System.out.println(c3);//最后会输出a
-
转义字符
布尔值拓展
boolean flag=true;
if (flag){}//老手
if (flag==true){}//新手
//上面两个if代码是一样的
//Java有一句话Less is More!(代码要精简易读)
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低—————————————————————>高 byte,short,char -> int -> long -> float -> double 注:小数的优先级一定大于整数。
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
-
强制类型转换(高到低):(类型)+变量名 例:
int i =127;
byte b =(byte)i;
注:如果数值超过表示范围,内存就会溢出,重新计数。
-
自动类型转换(低到高):从低到高会自动进行转换 例:
int i =128;
double b =i;
-
注意点: 1.不能对布尔值进行转换。 2.不能把对象类型转换为不相干的类型。 3.在把高容量转换到低容量的时候,强制转换。 4.转换的时候可能存在内存溢出或者精度问题。
-
一些常见问题提醒:在进行运算时,当输出的数大于他类型的范围需要转换更大的类型时,要用强制转换否则数字会先进行运算再转换输出的数还是溢出的数。(小科普:Jdk7新特性,数字之间可以用下划线分割且在运行时不会显示;注:在写代码的时候因为小写的l容易被看成1所以尽量养成用大写L的习惯)
变量
-
变量是什么:就是可以变化的量!
-
java是一种强类型语言,每个变量都必须声明其类型。
-
java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变,但不建议在一行里面定义多个值。
注:1.每个变量都有类型,类型可以是基本类型,也可以是引用类型。 2.变量名必须是合法的标识符。 3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
-
类变量:也叫静态变量,是一种比较特殊的实例变量,用static关键字修饰;一个类的静态变量,所有由这类生成的对象都共用这个类变量,类装载时就分配存储空间。一个对象修改了变量,则所以对象中这个变量的值都会发生改变。
-
实例变量:也叫对象变量、类成员变量;从属于类由类生成对象时,才分配存储空间,各对象间的实例变量互不干扰,能通过对象的引用来访问实例变量。但在Java多线程中,实例变量是多个线程共享资源,要注意同步访问时可能出现的问题。(如果不自行初始化,数值类型的默认值为0或0.0,布尔值默认是false,除了基本类型其余的默认值都是null)
-
局部变量:方法中或者某局部块中声明定义的变量或方法的参数被称为局部变量,他们只存在于创建他们的block里({}之间)无法在block外进行任何操作,如读取、赋值。在Java多线程中,每个线程都复制一份局部变量,可防止某些同步问题发生。
常量
-
常量(Cinstant):初始化(initialize)后不能再改变值!不会变动的值。
-
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
-
常量名一般使用大写字母
注:在类型前面的修饰符是不分顺序的
final 常量名=值;
final double PI=3.14;
变量的命名规范
-
所有的变量、方法、类名要符合见名知意原则
-
类成员变量:首字母小写和驼峰原则。例:monthSalary (除了第一个单词外,后面的单词首字母大写)
-
局部变量:首字母小写和驼峰原则。
-
常量:大写字母和下划线。例:MAX_VALUE
-
类名:首字母大写和驼峰原则。例:Man,GoodMan
-
方法名:首字母小写和驼峰原则。例:run(),runRun()
运算符
-
算术运算符:+,-,*,/,%(余数)(前面为二元运算符后面为一元运算符),++,--
-
赋值运算符:=
-
关系运算符:>,<, >=, <= , ==(对是否进行判断) , !=(不等于) ,instanceof
-
逻辑运算符:&&,||,!
-
位运算符:&,|,^,~,>>,<<,>>>
-
条件运算符:?:
-
扩展赋值运算符:+=,-=,*=,/=
注:当一个较"小"类型与一个较"大"类型的数据一起运算时,系统将自动将"小"类型转换成"大"类型,再进行运算。(就是按照优先级)
自增自减运算符(一元运算符)
int a = 3;
int b = a++; //代表执行这行代码后,先把a的值赋给b然后a再自增,最后输出的结果是a=4,b=3相当于加了个a=a+1的指令
int c = ++a; //代表执行这行代码前,先进行自增再给c赋值,最后输出结果就是a=3,c=4
扩充:很多运算我们会使用一些工具类来操作。如:幂运算
double pow =Math.pow(2,3); //代表代表2的3次方
逻辑运算符{与(and),或(or),非(取反)}
boolean a = true;
boolean b = false;
System.out.println(a && b); //逻辑与运算:两个都为真,结果才为true
System.out.println(a || b); //逻辑或运算:两个变量有一个为真,则结果才为true
System.out.println(!(a && b));//非,里面括号里的东西可以变的,如果是真则为假,如果是真则为假
-
短路运算:就像与运算如果第一个变量为假则不进行后面的运算直接输出false,这就叫短路运算。
位运算
注:1为真,0为假 A=0011 1100 B=0000 1101
-
A&B(与)=0000 1100 [A与B比较,当两个数在相同的位都是1(真)则输出1(真)]
-
A|B(或)=0011 1100 [A与B比较,当两个数在相同的位有一个为1则输出1]
-
~B(非)=1111 0010 [取反,1为0,0为1]
-
A^B(异或)=0011 0001 [A与B比较,当两个数在相同位上数相同则为0,不同则为1]
-
“<<”是左移,就是把数字向左移(左移相当于乘2)
-
“>>”是右移,就是把数字向右移(右移相当于除2) 效率极高 例题:如何最快算出28 (28=16;2的四次方为16)
System.out.println(2<<3);//代表2向左移三位
//0000 0010 2
//0000 1000 8
//0001 0000 16
条件运算符(三元运算符)
x ? y : z (如果x==true,则结果为y,否则结果为z)例:
int score =80;
String type = score<60 ?"不及格":"及格";
扩展赋值运算符(偷懒必备)
int a = 10;
int b = 20;
a+=b; //相当于a=a+b,最后输出为30
b-=a; //相当于b=b-a,最后输出为10
小科普:当+两边有一方是字符串类型(string)就会把其他操作数都转化成string再进行连接,字符串("")在前面先转化,在后面先进行运算。
包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
-
包语句的语法格式为:
package pkg1 [. pkg2[. pkg3…]];
-
一般利用公司域名倒置作为包名;(例:com.baidu.www)
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能。
import package1[.package2…].(classname|*);
JavaDos
-
JavaDos命令是用来生成自己API文档的
-
参数信息: @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 @throws 异常抛出情况
//注:在包的下面,类的上面
/**
*@author Kuangshen
*@version 1.0
*@since 1.8
*/
//注:在类的里面
String name;
/**
*@param name
*@return
*@throws Exception
*/
public String test(String name)throws Exception{
return name;}
//注:在打完上面的代码后再在string name下面打文档注释后按回车就会出现@param @return @throws
之后右击类从文件夹打开然后进入这个文件夹的命令指令行输入javadoc (-encoding UTF-8 -charset UTF-8) 文件名.java 括号中的加了可以防止乱码。
成功了就会在原来的文件夹中出现一个index的网页文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码