java基础语法
我们学英语的时候要学一些语法,小时候刚学汉字的时候也要学一些基本语法,不然你们说话怎么说话,同样咱们学习一门编程语言也是如此,需要掌握他的语法才能把它书写出来。
注释、标识符、关键字
注释
标注解释,平时写代码,在代码量比较少的时候还可以看懂自己写的,比如刚才的HelloWorld,当你的项目里有一万行、十万行代码的时候,此时无法靠人脑去把代码都记住,过一段时间就忘了或者记不住想要借助一些标注,我们就需要用到注释了。类似上学时做的笔记。我们在写代码时,要把程序用我们中文或者别的能看懂语言写好这段代码是什么意思。
注释不会被执行,是给我们写代码的人写的。
书写注释是一个非常好的习惯。
平时写代码一定药注意规范
在学习时尽量给自己多找一些乐趣,这样就会更开心了
java中的注释有三种
- 单行注释 //,快捷键为Ctrl + /,可以直接注释
- 多行注释 /* 并按下空格即可
- 文档注释 输入/**并按下空格即可
标识符
首先,每个人从出生开始都有一个名字,生活中的事物也都有名字。在程序里也是不例外的,咱们作为造物主也要给所有东西去一个名字,比如我刚刚才HelloWorld,是文件名也是类名。高亮的部分时关键词,是我们系统定义的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CWKo5Tri-1654002451159)(C:\Users\思无邪\Desktop\微信截图_20220512121917.png)]
标识符注意点
- 所有的标识符都应该以字母(A-Z或者a-z),美元符号($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z或者a-z)、美元符号($)、下划线(_)、或数字的任何字符组合
- 不能使用关键字作为变量名和方法名
- 标识符是大小写敏感的
- 可以使用中文命名,但是一般不建议这样去使用,也不建议去使用拼音
数据类型
强类型语言
java是强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用,强类型语言也叫强类型bean语言
弱类型语言
如JS,
java的数据类型分为两大类
基本类型(primitive type)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKs15tzN-1654002451160)(C:\Users\思无邪\Desktop\QQ截图20220512164500.jpg)]
平时生活中肯定会用到数字,字符即字。数字还会分为整数和小数,java里也是这样的。
字符:是指计算机中使用的字谜、数字、字和符号。
引用类型(reference type)
存放的是对象的地址信息,指向对象在堆中的具体位置。
类型转换
由于java是强类型语言,所以在进行有些运算的时候,需要用到类型转换.整型和常量、字符串是可以混合运算的,刚才我们也说了char本质上是一串数字。
运算中,不同类型的数据先转化为同一类型,然后进行运算。小数的优先级一定大于整数。
从低到高依次为byte,short,char --> int --> long --> float --> double
强制类型转换
从高到底
自动类型转换
从低到高
类型转换代码
package com.kuang.base;
public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; // 内存溢出
// 强制转换 (类型)变量名
// 自动转换
// 类型转换在后面会经常用到,除了转换基本类型还可以转换类,格式都是以燕大哥
System.out.println(i);
System.out.println(b);
/*
注意点:
1。不能对布尔值进行转换,布尔是按位的,不能进行转换
2. 不能把对类型转换为不相干的类型,相当于不能把人转换成猪,但可以把男人转换成女人
3. 在把大容量转换到低容量的时候,强制转换
4. 转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println("=======================");
System.out.println((int)23.7);
System.out.println((int)-45.89f);
System.out.println("=======================");
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char)d);
}
}
数据类型扩展
package com.kuang.base;
public class Demo03 {
public static void main(String[] args) {
// 整数拓展: 进制 二进制0b开头 十进制 八进制0 十六进制0x
int i=10;
int i2 = 010; // 八进制
int i3 = 0x10; // 十六进制 0~9 A~F
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("=========================================================");
// 浮点数拓展 银行业务怎么表示钱
// BigDecimal 数学工具类
// float 能表示的数字是有限的,但有些东西除出来是无限的、离散的
// 存在舍入误差,很多数字float类型没办法精确的表示,结果只能是大约束,接近但不等于
// double
// 最好完全避免使用浮点数进行比较
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); //false
System.out.println(f);
System.out.println(d);
float d1 = 23131312312312313f;
float d2 = d1 + 1;
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; 2字节 0~65536 Excel 2的16次方
// U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3);
// 转义字符
// \t 制表符
// \n 换行
// ...
System.out.println("Hello\tWorld");
//
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc == sd);
// 留个问题。对象 从内存分析。为什么你眼睛看到的一样的东西在程序里是不一样的
// 布尔值拓展
boolean flag = true;
// 这两句完全一样
if(flag == true){
}
if(flag){// 默认判断里面的东西是不是为真
}
// Less is More 代码要精简易读
}
}
变量、常量
在中学的时候学过一元二次方程,一般是x等于什么,y等于什么,当时老师会告诉你x和y是一个变量
变量是什么?就是可以变化的量。可以通过变量操作内存中得一些数据,变量指代内存中的一块空间,空间的位置是定死的,存什么东西是不确定的。比如家里有个的衣柜,有三个格子,分别贴上鞋子、衣服和袜子的标签。这个柜子,就和电脑里的内存一样是本身就存在的。只是我们给它加了个标签,这个地方应该放鞋子,这个地方应该放衣服、这个地方应该放袜子。
内存也和衣柜类似,需要给他指定一个空间放指定数据类型的数据,假如放了四个整数,怎么区分这四个,我们需要取名字去找到他,于是有了变量的名。
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
数据类型 变量名 = 值;// 不建议在一行定义多个变量。
变量的作用域
类变量 要加static
实例变量
局部变量 方法里
常量(Constant):初始化(initialize)后不能再改变!不会变动的值
所谓常量可以理解为一种特殊的变量,他得值被设定后,在程序运行过程中不允许被改变。
格式: final 常量名 = 值;
常量名一般使用大写字符
package com.kuang.base;
public class Demo08 {
// 类变量 static 从属于类,而且会随着这个类一起出现一起消失
static double salary = 2500; // 2500默认是int类型
// 属性,现在就简单理解为变量
// 实例变量:从属于对象;如果不自行初始化,这个类型得变量会有默认值 0 0.0 u0000
// 布尔值默认是false
// 除了基本类型,其余的默认值都是null
// 通过这个类才能使用他,在类里面
String name;
int age;
// main() 方法
public static void main(String[] args) {
// 局部变量:使用前必须声明和初始化值.作用域在方法里面
int i = 10;
System.out.println(i);
// 变量类型 变量名字 = new com.kuang.base.Demo08
Demo08 demo08 = new Demo08();
System.out.println(demo08.name);
System.out.println(demo08.age); // 能不能也想输出i那样输出name和age
// 类变量 static删掉后就不能直接输出了
System.out.println(salary);
}
// 其他方法
public void add() {
}
}
变量的命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则:monthSalary。 除了第一个单词以外,后面的单词首字母大写
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:run(), runRun()
除了常量和类名,其他都是首字母小写加驼峰原则。
运算符
**Java语言支持如下运算符:**运算符的优先级一般用()更明显易懂
-
算术运算符:+,-,*,/,%(取余运算即模运算),++,–
-
赋值运算符:=。如int a = 10;念为把10赋值给a
-
关系运算符:>,<,>=,<=,==,!=,insranceof
-
逻辑运算符:&&,||,!
-
位运算符:&,|,^,~,>>,<<,>>>(了解即可)
-
条件运算符:?:
-
扩展赋值运算符:+=,-=,*=,/=
重点掌握前四个
运算符的优先级
运算符扩展
++i与i++
package com.kuang.operator;
public class Demo04 {
public static void main(String[] args) {
// ++ -- 自增,自减 一元运算符,刚才的二元都是两个或者多个
int a =3;
int b = a++; // 执行完这行代码后,先给b赋值,在自增
// a++ a = a +1 隐藏的自增的语句,不需要自己去写
System.out.println(a);
// a++ a = a +1
int c = ++a;// 执行完这行代码钱,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 幂运算 我们平常写的是这样的2^3(java里没有这个写法,
// 很多运算我们会使用工具类来进行操作)
// Math类提供了很多科学工程计算需要使用到的方法
// 2*2*2 = 8
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
逻辑运算符的短路
package com.kuang.operator;
// 逻辑运算符
public class Demo05 {
public static void main(String[] args) {
// 与(and) 或(ro) 非(取反)
boolean a =true;
boolean b =false;
System.out.println("a && b:"+(a&&b)); //逻辑与运算:两个变量都为true,结果才为true
System.out.println("a || b:"+(a||b)); // 有一个为真结果就是真,两个都是假才是假
System.out.println("(! (a && b:))"+!(a&&b));
// 短路运算
System.out.println("a && b:"+(b&&a));
int c = 5;
boolean d = (c<4)&&(c++<4); // 前一个条件c<4的结果为false了,就不会去执行c++<4了
System.out.println(d);
System.out.println(c); // c还是5
boolean e = (c++<4)&&(c<4);
System.out.println("交换c<4和c++<的位置后结果如下:");
System.out.println(e);
System.out.println(c); // c执行了c++,变为6
}
}
位运算符
package com.kuang.operator;
public class Demo06 {
public static void main(String[] args) {
/*
位运算是直接与底层打交道的,运算效率非常高,很多底层相关的算法里都有用到
A = 0011 1100
B = 0000 1101
不要轻易的去使用位运算,很容易出错
-----------------------------------------------
A&B = 0000 1100
A|B = 0011 1101
^是异或,如果两个相同则为1,不同则为0
A^B = 1100 1110
~取反
~B = 1111 0010
2*8 = 16怎么运算最快? 2*2*2*2计算机正常去运算的话要在底层做非常多的事情
计算机底下都是电路,如果是位运算,换一个灯亮即改变它的高低电路即可
效率极高
<< *2
>> /2
比如我们现在有8位二进制数
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
1,2,4,8,16的二进制往左移动一位
*/
System.out.println(2<<3);
}
}
包机制、JavaDoc
包的本质就是文件夹。
为了更好地组织类,Java提供了包机制,用于取别类名的命名空间。防止命名空间重复的问题。
包语句的语法格式为:
package pkg1[ . pkg2[ . pkg3…]];
一般利用公司域名倒置作为包名;www.baidu.com com.baidu.www
- 为了能够使用某一个包的成员,我们需要再Java程序中明确导入该包。使用“import”语句可完成此功能。
import package1[. package2] . (classname|*);
JavaDoc
- JavaDoc是一种技术,可以将我们的一些注释信息生成一个帮助文档,类似于java的API即JDK帮助文档。javadoc命令是用来生成自己API文档的
- 参数信息
- @author 作者名
- @version 版本号
- @since 指明需要使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常情况抛出
本文内容是看了他人视频后的小结。