Java基础语法
注释
-
我们编写复杂代码时,为了以防忘记,所以在代码旁书写注释可以方便下一次阅读,也方便他人观看。
-
注释不会被执行
-
java里面注释分为三种
- 单行注释:
//单行注释
- 多行注释:
/*注释内容*/
- 文档注释:
/**
*注释内容
*注释内容
*/
标识符
关键字
命名
- java所有的组成部分都需要名字,类名,方法名,变量名...
- 所有标识符只能以字母(A-Z或a-z,美元符号($),下划线(_)开头
- 首字母之后可以任意字符组合
- 大小写敏感,大写和小写不一样的。
- 不建议用拼音和中文(别问,问就是规范,多用英语有好处的哦)
数据类型
-
Java是强类型语言:要求变量使用要严格符合规定,所有变量都必须先定义才能使用(为了安全性)
-
Java的数据类型分为两类
-
基本类型(primitive type)
-
数值类型
-
整数类型(byte,short,int,long)
int num1 = 10;//最常用 byte num2 = 20; short num3 = 30; long num4 = 40L;//long类型在后面加L区分
-
浮点类型(float,double)
float num5 = 50.1F;//Lfloat类型在数字后面加F double num6 = 60.2445345435;
-
字符类型(char)
char name = 'a'
-
-
Boolean类型(true,false)
boolean falg = true; //boolean falg = false;
-
相关拓展
public class Demo02 { public static void main(String[] args) { //整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x int i1=10; int i2=010;//八进制0 int i3=0x10;//十六进制0x 0~9 A~F 16 System.out.println(i1);//10 System.out.println(i2);//8 System.out.println(i3);//16 System.out.println("======================="); //浮点数拓展: //第一个问题 float f1=0.1f; double f2=1.0/10; System.out.println(f1==f2);//结果居然为false, //第二个问题 float f=1645454511; float d=f+1; System.out.println(f==d);//结果居然为true //总结原因:float是有限的,离散的,具有舍入误差,是大约不等于的。所以最好避免使用浮点数进行比较。 //应该使用Bigdecimal数学工具类进行处理。 System.out.println("============================"); //字符拓展: char c1='a'; char c2='中'; System.out.println(c1);//a System.out.println((int)c1);//97,强制转换 System.out.println(c2);//中 System.out.println((int)c2);//20013,强制转换 //造成上面结果的原因是:所有的字符本质还是数字 //编码里面有一个Unicode用于处理各种字符问题(a=97,中=20013) //例如: char c3='\u0061';//这后面这一串就是a在Unicode编码中的表现 System.out.println(c3);//a System.out.println("============================"); //转义字符 // \t:表示一串空格 // \n:表示换行 //...(还有很多自己去查吧) //示例: System.out.println("Hello,\tWorld");//Hello, World System.out.println("============================"); //布尔值拓展 boolean flag = true; if(flag==true){}//新手喜欢 if(flag){}//老手(推荐) //上面这两个都表示判断flag的意思,if是判断语句,if里面默认判断true or false //好了,以上就是一些拓展 } }
-
-
- 引用类型(reference typ
2. **引用类型**(reference type)
- 类
- 接口
- 数组
---
### 类型转换
由于Java是强类型,,所以要进行有些运算的时候,需要用到类型转换。
- 运算中,不同类型的数据转化为同一类型,然后计算,分为两种。
- 强制类型转换:(类型)变量名 高到低
- 自动类型转换:低到高
![](https://img2020.cnblogs.com/blog/2301034/202102/2301034-20210207152659206-425353262.png)
注意:
1. 不能对布尔值转换
2. 不能把对象类型转换为不相干的类型
3. 高容量转换为低容量需要强制转换
4. 转换的时候可能出现内存溢出,精度出现问题。
---
### 变量
- 变量就是可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,要素:变量名,变量类型和作用域。
```Java
type varName =value;
//数据类型 变量名 = 值;
//可以用逗号,隔开来声明多个同类型变量。(不建议)
-
注意:
- 每个变量都有类型,可以是基本类型,也可以是引用类型。
- 每个变量名都是合法标识符(就是符合命名规范)。
- 声明变量是一条完整语句,要以分号;结束。
变量作用域
-
类变量:写在类里面的+static,从属于类的,随着类创建,随着类消失
-
实例变量:类中间
-
局部变量:方法里面的
这是一个例子,关于三种变量的粗略应用
public class Demo08{ //类变量 static 数据类型 变量名 = 值 static double money = 3000; //实例变量:从属于对象;如果不自行初始化,那么变量值为默认初始值0,null,false。 String name; int age; //main方法 public static void main(String[] args){ //局部变量i;必须声明和初始化值 int i = 10; //创建类Demo08 :变量类型 变量名字 = new Demo08 //这里要创建类对象才能使用类变量 Demo08 demo08 = new Demo08; //使用局部变量i System.out.println(i); //使用类变量money System.out.println(money); } //其他方法 public void add(){ } }
常量
常量(constant)是初始化(initialize)过后不能再改变的值!不会变动的值
-
可以认为是特殊的变量,他的值被设置以后,在程序运行过程中不能改变
final 常量名 = 值; final double PI = 3.14;
-
常量名一般用大写字符
注意:这里final和前面的static都是修饰符,顺序不分先后。
运算符
- Java的运算符有
-
+-*/:加减乘除
-
%:取余,又叫模运算
-
++:自增运算,例如:++a;或a++;就是a=a+1;但是++a和a++不一样。
-
--:自减运算,规则和上面一样。
-
=:赋值运算符
-
">,<,>=,<=,==,!=,instanceof":关系运算符
- !=,不等于
- ==:等于
-
&&,||,!:逻辑运算符
- &&:且
- ||:或
- !:非
-
&,|,^,~,>>,<<,>>>:位运算符(以下了解)
-
?::条件运算符或者叫三元运算符
-
+=,-=,*=,/=:扩展赋值运算符
优先级:用()比较好;
这里用例子来演示使用方法
public class Demo01 {
public static void main(String[] args) {
//定义四种类型的变量a,b,c,d用加法来作为例子
//注意:在使用除/时,如果结果为小数,须将参与运算的变量先强制转换为double型,不然结果会错误
long a=12345645;
int b=254;
short c=25;
byte d=10;
System.out.println(a+b+c+d);//long类型12345934
System.out.println(b+c+d);//int 类型289
System.out.println(c+d);// int 类型35,非long类型的整型运算结果为int型
}
}
public class Demo02 {
public static void main(String[] args) {
//关系结果运算符返回值为:正确,错误 布尔值
int a=10;
int b=10;
System.out.println(a>b);//false
System.out.println(a<b);//false
System.out.println(a!=b);//false
System.out.println(a==b);//true
}
}
public class Demo03 {
public static void main(String[] args) {
//这里用变量a自增++,来演示++的用发,--的用法相同
int a=1;
a++; //a++ 就是a=a+1;
System.out.println(a);//结果为2,这里理所当然是吧
System.out.println(a++);//结果为2,原因:a++当作一个整体在被使用时,先使用a的值,然再进行a= a+1运算
System.out.println(a);//结果为3,原因:上面一步
System.out.println(++a);//结果为4,原因,++a当作整体被使用时,先进行a=a+1运算,再将结果a使用。
}
}
下面是逻辑运算的例子
- &&,||,!:逻辑运算符
- &&:且
- ||:或
- !:非
//逻辑运算符
public class Demo04 {
public static void main(String[] args) {
//与(and),或(or),非(取反)
boolean a= true;
boolean b= false;
System.out.println(a||b);//true,true or false =true这个很明显
System.out.println(a&&b);//false,true and false = false这个也理所当然,这里就不解释了哈
System.out.println(a&&!b);//true,这里!b把b变成了true,所以结果为true
System.out.println(!a||b);//false,这里原理和上面一样,自己想想嘛
System.out.println("=====================================");//分割线
//短路运算,例如上面b&&a,因为b为false,所以不会继续运行后面的&&a
//短路运算示例
int c=5;
int d=6;
System.out.println((c>6)&&(d++>5));//结果为:false;这里(c>6)是false,所以他不会进行d++运算,下面我们验证d++是否运算。
System.out.println(d);//结果为6,即说明d++没有进行,这就是短路运算。
}
}
位运算&,|,^,~,>>,<<的例子
public class Demo05 {
public static void main(String[] args) {
/*
这里用二进制表示的AB作为示例进行位运算
A = 1100 0011
B = 1010 0101
------------------------------
A&B = 1000 0001
A|B = 1110 0111
A^B = 0110 0110
~A = 0011 1100
有一个例题:用最简单的算法计算2*8 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
不难发现1往左边移动一位十进制数值*2,所以由此结论:
1.<< *2
2.>> /2
*/
System.out.println(2<<3);//2*8=16的最简单计算方式
}
}
+=,-=,*=,/=:扩展赋值运算符示例
//扩展运算赋值示例
public class Demo06 {
public static void main(String[] args) {
//这里拿+=和-=作为示范,其他·格式一样的
int a=20;
int b=10;
a-=b;//a=a-b
b+=a;//b=b+a
System.out.println(a);//结果:10
System.out.println(b);//结果:20
System.out.println("=====================");//分隔线
//这里讲一下字符串连接符+
System.out.println(a+b+"");//结果:30,这里的第一个+是运算符号,
System.out.println(""+a+b);//结果:1020,这里的+是字符串连接符,只要前面出现了字符串,运算符+需要(),不然会认为是字符串连接符
System.out.println(""+(a+b));//结果:30,很细节是不是。
}
}
?:示例
//三元运算符
public class Demo07 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则结果为z
//这里开始上手
int a=2;
String result = (a<1) ? "小于1" : "大于或等于1";//(a<1)相当于x,"小于1"为y,"大于或等于1"为z
System.out.println(result);//打印结果:大于或等于1
}
}
包机制
- 为了更好的组织类,Java提供了区别类名的命名空间
- 包语句语法格式为:
package pkg1[.pkg2[.pkg3...]] //这里的[]表示包之间的包含关系,不需要打出来。
- 导入包
import package pkg1[.pkg2[.pkg3...]]
包的本质是文件夹
- 命名格式:com.名字.名字(建议根据具体情况要求来搞)
JavaDoc
- javadoc命令用来生成自己的api文档
- 这里是相关参数:
-
下面是示例:
//这里是类的文档注释 /** * @author Yaoyao * @version 1.0 */ public class Doc { //这里我写一个方法的文档注释 /** * @author Yaoyao * @return */ public String test(){ String name="yy"; return name; } //总结:文档注释放在什么上面就是什么的注释 }
-
这里使用idea生成doc,首先点击Tools,选择Generate JavaDoc。
-
像这样改一些参数和设置-encoding utf-8 -charset utf-8
-
然后idea会用浏览器帮你打开,就成了。
-
个人学习记录,有问题希望指出!