1. 概述
自我介绍:
吴嘉旭
19级数据科学与大数据技术国际班
中共预备党员
当讲师2年 大二开始就一直干这个事情 收获很多 不会讲讲不清楚
支持大家能够接班 热爱 爱技术 爱生活 感谢大家多多支持!!!
比赛: 数学建模、创新创业、计算机设计大赛 (计算机方向挺高的)
学习JAVA 对你很有帮助
1.1 Java介绍
是什么:
是一门全球最火的编程语言,排名第一,全球的编程语言,很多很多50+
C语言!!! 所有语言之父
C语言和JAVA的区别:
1.1.1 为什么要学?
思想不一样:面向过程(很难、过程比较繁琐) == 面向对象(简单)
难易程度不同:
JAVA相对于C更加简单,更加流行
解决问题
这两门语言解决的现实问题不一样?
C语言:做嵌入式设备,优势
JAVA语言:盘子很大,基本上什么都能做,服务器开发是他最擅长的领域
1.1.2 学习什么?
1)学习JAVA基础
运算符(+、-、*、/)、流程控制:if()、循环、数组、方法
2)面向对象
万物皆对象
三大特征:封装、继承、多态
3)API(常用的类)
4)高级的API
线程、进程、网络编程
1.1.3 我们这一期班级的使命和任务?
最终的任务:做一个项目:飞机大战
准备工作:先带大家学习JAVA基本知识、入门
深入研究:B站 搜JAVA学习
大数据的同学 必修课 学好
2. 开发相关的工具
工欲善其事!必先利其器!!! dev 环境变量配置
2.1 JDK
介绍:
Java Development Kit:java的开发工具包 必须有!!!!
安装过程
1.
2.安装成功!
配置环境变量:
为什么要配置,将来的这些JDK,告诉它怎么去找、到哪里找这些工具??
找回家的路,告诉她地址
JAVA_HOME (shift+减号键)
恭喜你!!安装成功了!!!测试JDK是否安装成功:
win(图标左下角)+R
命令:java 空格 -version
2.2 IDEA
IDEA是一个写代码的软件,传统的780年代,写代码的方式记事本开发
记事本:弊端:你写错代码他不提示 也不好看密密麻麻堆在一块
eclipse(免费、开源)
IDEA(收费、功能比较强大、随着MAVEN、Spring技术的崛起,更加方便)
过程演示
2.3 成功测试
2.4 拓展
1.一个点代表一级目录
创建包: com.bigdata2
2.代码写在哪里 ==》类
3. 基础知识
3.1 打印、输出语句(换行、不换行)
package com.bigdata.day02;
/**
* @Author 吴嘉旭
* @Date 2022-04-20-16:29
* @Description:
*/
public class Test {
//这是main方法,main方法是一个程序的主入口
//public 公共的
//static 静态的
//void 返回值为空
//main 方法名
//()参数列表
//String[] args 参数
//{} 代码块 想要运行的代码 就放在代码块中就可以了
public static void main(String[] args) {
//打印输出(控制台)语句
//system 系统
//out 向外输出
//println 打印并且换行
//print 打印不换行!
//()要输出的内容
System.out.print("今天天气真糟糕");//不换行
System.out.println("今天给大数据的小伙伴上课");
}
}
3.2 关键字 标识符 注释 变量 基本类型 类型转换
3.2.1 标识符
3.2.2 关键字
3.2.3 注释
解释说明:药的说明书 程序员的基本修养 必须写注释
单行注释: //
多行注释: /* /
文档注释: /* */
package com.bigdata.day02;
/**
* @Author 吴嘉旭
* @Date 2022-04-20-16:38
* @Description:
*/
//橙色的字体就是关键字 eclipse红色
public class Test2 {
public static void main(String[] args) {
//这是单行注释
/*
这是多行注释
*/
/**
* 这是文档注释
*/
//注释快捷键 ctrl + /:单行注释 多行注释:ctrl + shift + /
System.out.println("测试快捷键");
}
}
3.2.4 变量
概述:不断改变的量,在计算机里变量怎么理解,储存地址,存放数据的空间
3.2.4.1 变量类型(4类8种)
基本类型、引用类型(对象类型)
1byte = 8bit
课堂测试:
char类型、布尔类型
需要你保存一个字符:中、a、1、符号
package com.bigdata.day02;
/**
* @Author 吴嘉旭
* @Date 2022-04-20-17:06
* @Description:
*/
public class Test_Char {
public static void main(String[] args) {
char c = '中'; //快速复制当前行 ctrl + alt + 方向键下
char c1 = 'a';
char c2 = 98;//保存的97,打印为什么是a???? ascil码表!!!
char c3 = '%';
System.out.println(c);
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
}
}
package com.bigdata.day02;
/**
* @Author 吴嘉旭
* @Date 2022-04-20-16:47
* @Description:
* 这个文件是用来测试变量的数据类型
*/
public class Test3 {
public static void main(String[] args) {
//测试整型
//1.定义一个整数
byte a = 127; //在计算机内存中开辟一个空间,存放1这个数字
// byte a1 = 128; 128超过byte的范围了
short b = 2000;
// short b = 50000; //short = 50000超出范围
int c = 3; //最常用的 21亿
long d = 4; //保存比int还大的整数
//测试浮点型 保存小数 float(单精度) double(双精确度)
//区别:精度 取值范围
double d2 = 3.14;
//数字本身有类型的 3.14默认是double类型
//小类型 float 3.14 默认是double类型 小类型不能直接存大类型,
// 需要转换 强制转换
//定义一个变量 3要素:变量类型 变量名 = 变量值
float f = (float) 3.14;
char c1 = '中';//char类型使用单引号
//测试布尔类型数据
//true false
boolean b1 = true;
boolean b2 = false;
// System.out.println(b1+","+b2);
//打印的玩法
/**
* 定义一个变量 int ,变量名叫age,定义一个变量String 变量名叫name
* 打印 我叫XXX,今年XX岁
*/
int age = 23;//保存年龄
String name = "奥特曼";//保存姓名 String是一个引用类型,保存的值要加双引号
//分离动态数据和静态数据
System.out.println("我叫"+name+",今年"+age+"岁");
}
}
变量交换
要求:定义两个整形变量a、b,要求交换a和b的值???
a=1 , b=2;???a=2/b=1;???
package com.bigdata.day03;
/**
* @Author 吴嘉旭
* @Date 2022-04-27-16:22
* @Description:
* 用于完成变量的交换
*/
public class Test1_change {
public static void main(String[] args) {
//定义两个变量
int a = 3;
int b = 7;
int c = 0; //引入第三个变量 用来做中间值
//要交换a和b的值???
c = a; // 先把a的值交给c保存
a = b; //把b的值交给a
b = c;// 把a的值给b
System.out.println(a);
System.out.println(b);
}
}
3.2.4.2 类型转换
3.1.1 综合案例:学生信息案例
输出学生的姓名、年龄等信息
//打印的玩法
/**
* 定义一个变量 int ,变量名叫age,定义一个变量String 变量名叫name
* 打印 我叫XXX,今年XX岁
*/
int age = 23;//保存年龄
String name = "奥特曼";//保存姓名 String是一个引用类型,保存的值要加双引号
//分离动态数据和静态数据
System.out.println("我叫"+name+",今年"+age+"岁");
3.3 运算符
3.3.1 运算符案例(接收控制台输入的值)
测试自增自减(点击回车自增1、自减1)
优先级控制
package com.bigdata.day02;
/**
* @Author 吴嘉旭
* @Date 2022-04-20-17:25
* @Description:
* 测试运算符
*/
public class Test4_num {
public static void main(String[] args) {
/**
* 1.定义两个变量 int 名字自定义 num1、num2 记录两个证书
* 2.定义一个变量,用来保存上面两个整数的和 int sum = num1+num2
* 3.定义一个变量,用来保存上面两个整数的积
* 4.定义一个变量,用来保存上面两个整数的商
* 5.定义一个变量,用来保存上面两个整数的差
* 打印出结果 :格式如下:和为XXX,积为XXX分4句打印语句
*/
// int num1 = 0; //局部变量区别于成员变量,必须初始化(必须赋值)
// int num2 = 1;
int num1 = 1,num2 = 1;
int sum = num1 + num2;
double divide = num1 / num2;//扔掉小数位,分母不能为0
int chengfa = num1 * num2;
int jianfa = num2 - num1;
// System.out.println("和是:"+sum);
// System.out.println("差是:"+jianfa);
// System.out.println("积是:"+chengfa);
// System.out.println("商是:"+divide);
//测试比较运算符
System.out.println( 1 > 2);//false
System.out.println(3>2);//true
System.out.println(3 != 2);//true
System.out.println(3 >= 2);//true
//逻辑运算符
System.out.println( true & false);//一假则假 逻辑与
System.out.println(false && true);//false 短路与 效率不一样
boolean b= 1>=0;//true
boolean b1 = 0==0;//true
System.out.println(b || b1);//true
System.out.println(1>=2?2:4);//冒号前是true的结果区,反之
}
}
复合赋值运算符测试:
package com.bigdata.day03;
/**
* @Author 吴嘉旭
* @Date 2022-04-27-16:31
* @Description:
*/
public class Test2 {
public static void main(String[] args) {
int a = 1;
//需求,让a每次自增1
// a++;//理解为是一种简写形式
//完整写法
// a = a+1;
a += 1;// 复合赋值运算符完成简写
//同理 a--; a = a-1; a -= 1;
// a -= 3 等价于 a = a-3;
System.out.println(a); // 2
}
}
判断2数的最大值????
3.4 流程控制
概述:
不同的情况,对应不同的流程
满足条件1:执行什么操作
满足条件2:执行什么操作
3.4.1 语法介绍:
单分支:if(判断条件){条件为true时执行的代码}
多分支: if(条件1){条件1为true时执行的代码} else if(条件2){条件2为true时执行的代码}
嵌套分支(判断嵌套判断):
if(外层条件){
if(内层条件){
sout(1);
}
}
3.4.1 案例:判断学生成绩等级
需求:要求输入学生的成绩,根据学生成绩给出对应的等级:
90+:优秀
80-90:良好
70-80:中等
60-70:合格
60以下:不及格
package com.bigdata.day03;
import java.util.Scanner;
/**
* @Author 吴嘉旭
* @Date 2022-04-27-16:41
* @Description:
* 用来测试if的
*/
public class Test3_score {
public static void main(String[] args) {
// int score = 90;
//让用户智能输入,不要我(写代码的人)
//接收控制台输入的值
//new:新的 用来创建对象的
// Scanner 扫描器 控制台
//System 系统 in 输入
//nextInt 你下一个输入的值为整数类型
int score = new Scanner(System.in).nextInt();
// System.out.println("成绩为:"+score);
if (score > 90){
System.out.println("你的等级为:优秀");
}else if (score >= 80 && score < 90){
System.out.println("你的等级为:良好");
}else if (score >= 70 && score < 80){
System.out.println("你的等级为:中等");
}else if (score >= 60 && score < 70){
System.out.println("你的等级为:及格");
}else{
System.out.println("你的等级为:不及格");
}
}
}
3.5 循环结构
概述:
当你需要反复执行某一个需求的时候
执行流程:
第一步:开始条件
第二步:进入判断条件
第三步:进入循环体判断
第四步:更改条件
3.5.1 for
3.5.2 while
3.5.3 do while
3.5.4 案例:打印10次你好
3.5.5 案例:打印 0-10
3.5.6 案例:求1-100的和
package com.bigdata.day03;
/**
* @Author 吴嘉旭
* @Date 2022-04-27-16:57
* @Description:
* 需求是打印10次 1;
*/
public class Test4_for {
public static void main(String[] args) {
//循环10次
// for (int i = 0; //第一步执行 第一次走开始条件 第二次不走开始条件了
// i< 10; //第二步执行 判断条件
// i++){ //第四步执行
// System.out.println(1); //第三步执行
// }
//需求 : 打印1-10;使用for循环
//起始条件和终止条件是动态变化的 不是一成不变的!!!
for (int i = 1;i<11;i++){
System.out.println(i);
}
//需求:求1-100的和???
// 1+2+..+100; 什么在变??? 和在变??
// 定义变量记录总和
// int sum = 0;
// for (int i = 1;i<101;i++){
// sum = sum + i;//1+2+3+4...
// }
// System.out.println("1-100的和为:"+sum);
//需求:求1-100的奇数和
// int sum = 0;
// for (int i = 1;i<101;i++){
// if (i % 2 != 0){
// sum = sum + i;
// }
// }
// System.out.println("1-100的奇数和为:"+sum);
//需求:求1-100的偶数和 自己做
//使用while循环打印 10次1
//语法 : while(循环条件){循环条件成立时执行的代码}
//使用场景: 当你已知循环的次数,你可以使用for 未知的时候使用while
int i = 0;
while (i < 10){ //死循环!!!
System.out.println(1);
i++;
}
//需求,看下面的程序,写出它的结果
//do while循环do {条件成立时执行的代码}while (循环的判断条件);
int num = 1;
do {
System.out.println(3); //先不走判断,先执行do里的语句
num++;
}while (num < 5);
//问题:打印了几次3????
//while 和 do while的区别 是什么? do while肯定会执行一次循环体
}
}
3.6 方法
为什么用方法?分类引入(就像衣服分类一样,便于管理,控制代码的执行、封装)
3.6.1 方法的创建
3.6.2 方法的调用
3.6.3 方法的参数
3.7 数组
3.7.1 数组的创建
3.7.2 数组的使用
遍历数组
修改数组
3.7.3 数组工具类