java基础篇
狂神说Java
java预科篇
java三大版本:
- javaSE:标准版
- javaME
- javaEE:服务器开发
JDK&JVM&JRE
- JDK:java开发者工具
- JVM:java虚拟机
- JRE:java运行时环境
解释型和编译型语言:
- 解释型:我们可以理解为翻译(可以进行及时的翻译)
- 编译型:可以理解为出版社(只在第一次翻译,后续更新,需要重新买书)
java属于先编译再解释语言,先编译产生了.class
文件,后续再进行解释
java注释
-
单行注释
//
-
多行注释
/**/
-
javaDOC (一般用不到)
/** * @author.. */
java基础篇
标识符
- 关键字
- 标识符(字母,数字,下划线,$),数字不打头
数据类型(8个)
-
基本数据类型
-
整数
byte
int
(常用)long
(long a = 10000L
,后面添加L
)
-
浮点数
float
(float b = 1.22f
,后面添加f
)double
(常用)
-
字符
char
,用单引号 -
布尔值
true
false
-
-
引用数据类型
- 类
- 对象
- 接口
补充
-
进制
-
二进制
0b开头
-
八进制
0开头
-
十六进制
0x开头
//十进制 int a = 10; //二进制 int b = 0b10; //八进制 int c = 010; //十六进制 int d = 0x10;
-
-
字符
-
字符其实也是数字,她们遵循unicode码
char c = 'a'; System.out.printin((int)c)//得出的结果是一个数字
-
转义字符
\t \n
-
-
String
-
String是一个类
String a = new String("hello world"); String b = new String("hello world"); //这边a和b是不一样的,主要是因为他这个是应用类型,所以内存地址发生了改变 String sa = "hello world"; String sb = "hello world"; //这边sa和sb是一样的
-
-
boolean
- 不可以对布尔值进行强制类型转换
-
类型转换
- 高对低需要强制类型转换
- 低对高不用转换
变量常量
-
变量
-
局部变量:就是在花括号里,必须声明赋值
-
实例变量:在类里面,不在方法里面
- 实例变量从属于对象,如果不进行初始化,类型为默认值
- 数值默认值:0/0.000
- 布尔值默认值:false
- 除了基本数据类型:其他默认值都为null
-
类变量
变量类型 变量名字 = new 变量类型
Scanner scanner = new Scanner(System.in)
-
-
常量
final
补充
- 所有变量,方法类名等都需要见名知意
- 类:大驼峰
- 局部变量,方法名:小驼峰
- 常量:大写字母+_
MAX_VALUE
操作符
-
+ - * / %
-
++ --
int num1 = 1; // ++在后面,那么就是先赋值在++ // int num2 = num1++; // 上面的这行代码类似于 int num2 = num1; num1 = num1+1; // ++在前面,那么我们就是先加一,再赋值给别人 // int num3 = ++num1; // 上面的代码就等同于 num1 = num1+1; int num3 = num1; System.out.println("num1:"+num1); System.out.println("num2:"+num2); System.out.println("num3:"+num3);
-
Math.pow(n,m)
-
>,<.!=
-
&&,||,!
-
<<,>>
// >> << // << 左移,就相当于*2 // << 右移,就相当于/2 // 这个就相当于2*8(2的3次方) System.out.println(2<<3);//16 // 2*(2的四次方) System.out.println(2<<4);//32
补充:
- 字符串的连接
+
,和算术运算符+
// 字符串连接符
// 注意位置
int numa = 10;
int numb = 20;
System.out.println(numa+numb);
// 下面两个不要同的原因时,因为字符串拼接
// 第一个,一开始就是字符串,所以里面所有的加号(+),就都是用于字符串的拼接
System.out.println(""+numa+numb);//1020
// 第二个,开始时,加号,从左往右,所以我们默认是进行数值累加,后面知道时字符串,所以直接字符串拼接
// 所以,第一个时加法,第二个时字符串拼接
System.out.println(numa+numb+"");//30
-
包机制
我们可以简单地将包理解为文件夹
java流程控制
scanner用于用户的交互
Scanner scanner = new Scanner(System.in);
if(scanner.hasNextLine()){
// 使用next方式进行接受
// String str = scanner.next();
String str2 = scanner.nextLine();
// System.out.println("获取到输入:"+str);
System.out.println("获取到输入:"+str2);
}
-
我们一般用
scanner.hasNextLine()
,判断用户有没有进行输入 -
我们一般用
scanner.nextLine()
,获取用户的输入- 我们一般不使用
scanner.next()
- 因为当中间有空格出现时,我们会自动舍弃掉空格后面的东西,获取空格之前的东西
- 我们一般不使用
-
我们也可以对类型进行限制
-
识别
int
整数scanner.nextInt()
-
识别
double
小数scanner.nextDouble()
// 请输入整数 System.out.println("请输入整数"); // 如果下面的是整数 if(scanner.hasNextInt()){ // 获取搭配用户的输入 a = scanner.nextInt(); System.out.println("你输入的是整数"+a); }else{ System.out.println(("你输入的不是整数")); } // 请输入小数 System.out.println("请输入小数"); if(scanner.hasNextDouble()){ // 获取用户输入 b = scanner.nextDouble(); System.out.println("你输入的是小数"+b); }else{ System.out.println("你输入的不是小数"); }
-
-
每次用完
scanner
都需要关闭scanner.close()
,为了节省空间。
---------------------------------2022-5-20---------------------------------------------
结构--顺序结构
java本身就是顺序结构
结构--选择结构
if
if-else
if-else-if
switch
java内置比较,少用‘==’,尽量使用s.equal("value")
// switch语句的变量类型:
// 1.byte/short/int/char
// 2.7开始支持String类型
// 为什么支持了呢?原因是什么?
// 其实字符本省就是数字,他将字符串变为了数字,利用了hashCode()
// 3.case的标签必须为字符串常量或字面量
// 如果不写break,那么会造成case穿透,他会一直往下执行,直到遇到 break ,或者到最后结束了
// case穿透
// 注意case穿透现象,所以尽量多些break
char grade = 'A';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("不及格");
break;
default:
System.out.println("不合法");
}
结构--循环结构
-
while
-
do-while
-
for
例题
-
运算出1-1000能被5整除的数字,并且三个一行
// 输出1-1000能被5整除的,每行输入三个 int n= 0; for (int k = 0; k <= 1000; k++) { if(k%5==0){ System.out.print(k+"\t"); } // 每三个换行,差不多就是每15个输入一次 if( k %(5*3) == 0){ System.out.print("\n"); } }
-
打印九九乘方表(记住是一列一列去打印的)
// 打印九九乘法表 // 先打印第一列,再去去除重复项 // i1,是内部,i2是外部的 for (int i1 = 1; i1 < 10; i1++) { for (int i2 = 1; i2<=i1; i2++) { System.out.print(i1+"*"+i2+"="+(i1*i2)+"\t"); } System.out.print("\n"); }
-
jdk7+新特性,用于遍历数组和集合
// 定义一个数组 int[] numbers = {10,20,30,40}; // 对数组进行遍历 // 类似于语法糖 for (int x:numbers){ System.out.println(x); }
-
打印三角形
// 打印三角形,打印5行 // 先空格再星星,再星星 for (int p = 0; p <= 5; p++) { for (int q = 5;p<=q ; q--) { System.out.print(' '); } for (int q = 0;q<=p ; q++) { System.out.print('*'); } for (int q = 0;q<p ; q++) { System.out.print('*'); } System.out.println(); }
补充
-
break:跳出一整个循环
-
continue:只跳出这一次循环