如何创建一个项目
1、创建空项目
2、选择新模块
3、项目结构
1、注释、标识符、关键字
1)注释
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world!");
//单行注释
/*
这是多行注释
这是多行注释
*/
/**
* @Description Hello world
* @Author baoqiang
*/
}
}
2)关键字
3)标识符
- 所有的组成成分都需要名字,类名、变量名、以及方法名都被成为标识符
- 注意点
2、数据类型
- 强类型语言
- 要求变量的使用要严格符合规定,所有变量必须先定义后使用
- 弱类型语言
- java数据类型分为两大类
1) 基本类型(primitive type)
``` // 八大数据类型 //整数 byte num = 10; short num1 = 11; int num2 = 13; long num3 =14L;
// 浮点数 float num10 = 2.3F; double num12 = 234.34234234234;
// 字符 char a1 = ‘A’;//就是1个字 // String 不是关键字,是类 String namea = “我的”;
// 布尔 boolean flag = true;
- 什么是字节
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12881754/1621901543049-aad313bf-87e0-4e5b-ab58-168b0dbd02b6.png#clientId=u4da309e5-9ff2-4&from=paste&height=360&id=u3042c632&margin=%5Bobject%20Object%5D&name=image.png&originHeight=720&originWidth=1637&originalType=binary&ratio=1&size=352876&status=done&style=none&taskId=u8fbd2955-3508-4405-bd5e-7d722cf410d&width=818.5)
<a name="NAdz0"></a>
#### 2) 引用类型 (reference type)
- 面试题
// 整数 二进制0b、八进制0、十进制、十六进制0x int i = 1; int i2 = 010; int i3 = 0x10; System.out.println(i); System.out.println(i2); System.out.println(i3);
//浮点数 有限 离散 舍入误差 大约 接近但不等于BigDecimal
//为什么不相等,最好是完全使用浮点数进行比较(注意) float f = 0.1f; double d = 1.0 / 10; System.out.println(f == d);//false System.out.println(f);// 0.1 System.out.println(d);// 0.1
float f2 = 234234234234f; float d2 = f2 + 1; System.out.println(f2);//2.34234233E11 System.out.println(d2);//2.34234233E11 System.out.println(f2 == d2);//true
//字符串 所有的字符本身还是数字 编码 Unicode 占2字节 最多65536 char c20 = ‘a’; char c2 = ‘中’; System.out.println(c20); System.out.println((int)c20);//强制转换int 97
System.out.println(c2); System.out.println((int)c2);//强制转换int 20013
// 转义字符 \t 空格 \n 换行 System.out.println(“Hello\tWorld,\nmy love!”);
// 对象,从内存分析 String sa = new String(“hello world”); String sb = new String(“hello world”); System.out.println(sa==sb);//false
String sc = “hello world”; String sd = “hello world”; System.out.println(sc==sd);//true
//从布尔值扩展 boolean flag1 = true; if (flag1==true){} if(flag1){}
<a name="JP0JC"></a>
### 3、类型转换
- 转换容量 从低到高
- byte short char int long float double
<a name="HSRXs"></a>
#### 1)强制类型转换(高 -> 低)
<a name="GoDt5"></a>
#### 2)自动类型转换(低 -> 高)
/*
- 不能对布尔值转换
- 转换的时候可能会发生内存溢出、或精度问题 */ System.out.println((int)-25.4f); System.out.println((int)23.5f); char c = ‘a’; int b = c +1; System.out.println(b); System.out.println((char)b);
//操作比较大的数 注意溢出问题,数字间可以用 _ 分割,先把一个数转换类型
int r = 10_0000_0000; int years = 20; System.out.println(r * years); //-1474836480
long total3 = r * ((long)years); //20000000000 System.out.println(total3);
<a name="beuUF"></a>
### 4、变量、常量
<a name="VzRiT"></a>
#### 1)变量
- 变量是最基本的存储单元,要素包括变量名、变量类型、作用域
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都以分号;结尾。
- 变量作用域
- 类变量
- 实例变量
- 局部变量
public class HelloWorld {
static int callClick = 8;//类变量
String str1 = “hello world”;// 实例变量
public static void main(String[] args) {
int u = 0;//局部变量
}
}
//使用
public class demo01 {
static double salary = 2500;// 类变量
String str1 = "hello world";
public static void main(String[] args) {
System.out.println(salary);//类变量使用
//实例变量使用
demo01 demo01 = new demo01();
System.out.println(demo01.str1);
int i = 10;//局部变量使用
System.out.println(i);
}
}
<a name="U0Vcx"></a>
#### 2)常量
- 特殊的变量,不能改变
// 修饰符不存在先后
static final int IP = 123123;
<a name="na7kQ"></a>
#### 3)变量的命名规范
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12881754/1621987477327-d868e664-69fe-47cf-993a-405e187eff5b.png#clientId=ud6312abe-58cb-4&from=paste&height=112&id=ubd693cc2&margin=%5Bobject%20Object%5D&name=image.png&originHeight=223&originWidth=770&originalType=binary&ratio=1&size=89149&status=done&style=none&taskId=ub08bd66f-48de-40e7-9489-aeaa7bbd46c&width=385)
<a name="PJA7a"></a>
### 5、运算符
- Java语言支持如下运算符
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12881754/1622072151050-e6a7cfff-29ea-469b-bfc1-f2eab13ddae0.png#clientId=uc80394e5-7114-4&from=paste&height=315&id=u0cceeeea&margin=%5Bobject%20Object%5D&name=image.png&originHeight=629&originWidth=1099&originalType=binary&ratio=1&size=263054&status=done&style=none&taskId=ud8d356f5-ecc5-4a8f-9ec6-b7b9bd7f107&width=549.5)
- **代码示例**
package operator;
public class Demo02 { public static void main(String[] args) { long a = 1231231231231231L; byte b = 10; int c = 123; short d = 11;
System.out.println(a + b); // 有long 类型的,最终结果是long类型,其余都是int类型
System.out.println(b + c + d);
System.out.println((double) (c + d));
}
}
#
package operator;
public class Demo01 { public static void main(String[] args) { int a = 10; int b = 20; int c = 11; int d = 1;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println((double)d/c); // 只要将一方的类型转换即可显示正常
}
}
<a name="rUCve"></a>
#### 1)自增自减运算符
package operator;
// ++ — 一元运算符, public class Demo03 { public static void main(String[] args) { int a = 3; int b = a++;//先赋值,后自增 int c = ++a;//先自增,后赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
// 幂运算
double d = Math.pow(2,3);
System.out.println(d); //8.0
}
}
<a name="krKEd"></a>
#### 2)逻辑运算符
package operator;
public class Demo04 { public static void main(String[] args) { / 与 && 或 || 非! / boolean a = true; boolean b = false; System.out.println(a); System.out.println(b); System.out.println(“a && b: “ + (b&&a)); System.out.println(“a || b: “ + (b||a)); System.out.println(“!(a && b): “ + !(b&&a));
// 短路运算
int c = 5;
boolean d = (c < 4)&&(c ++ <4);
System.out.println(d);
System.out.println(c);
}
}
#
true false a && b: false a || b: true !(a && b): true false 5
<a name="CqJNL"></a>
#### 3)三元运算符
// 三元运算符 x ? y : z double score = 99.4; String a = score > 100 ? “及格” : “不及格”; System.out.println(a);//不及格
<a name="FpAio"></a>
#### 4)位运算符
// 2 8 如何效率最高 二进制 8位为一个存储单位,8位(一字节)表示的范围是0-255共256个数字 / 0000 0000 0 0000 0001 1 0000 0010 2 start 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 end */ System.out.println(2 << 3);
<a name="Hqq5B"></a>
### 6、包机制、javaDoc
<a name="FQrxr"></a>
#### 1)包机制
- 本质: 文件夹
- 注意
- 包名不要和类型重复
- 必须放在文件最上方
- import com.kuang.base.* //导入这包的所有类
- 阿里巴巴开发手册
- 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间
- 包语句的语法格式
package pkg1[. pkg2[. pkg3]]
- 一般公司域名倒置作为包名
- 为了能够使用一个包的成员,我们需要在java程序中明确导入该包,使用import语句可完成此功能
- import package [. package2...].(classname | *);
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12881754/1622160082291-d02641c7-4c7a-4e73-8a91-5b832c2f0052.png#clientId=ucd4cd17b-4eb1-4&from=paste&height=220&id=u05f79fee&margin=%5Bobject%20Object%5D&name=image.png&originHeight=439&originWidth=1124&originalType=binary&ratio=1&size=78526&status=done&style=none&taskId=u886fd062-2c81-4d53-bf44-53f65fe6437&width=562)
<a name="bRRuI"></a>
#### 2)javaDoc
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12881754/1622160721602-42385525-d054-401f-9c9f-6ff74d402c7d.png#clientId=ucd4cd17b-4eb1-4&from=paste&height=86&id=u816047f7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=172&originWidth=289&originalType=binary&ratio=1&size=40917&status=done&style=none&taskId=u8d6f449e-eb92-42c8-a37c-93da244bfcd&width=144.5)
- 类和方法都可以注释
<a name="ThHJf"></a>
##### 1)代码示例
javadoc -encoding UTF-8 -charset UTF-8 Doc.java // Doc.java package com.kuang.base;
/**
- @author Kyrie
- @version 1.0
@since 1.8 */ public class Doc { String name;
/**