什么是Java
Java是一门面向对象的编程语言
面向对象:一个很抽象的专业术语,暂时不用管。
编程语言:计算机可以识别的语言。
Java在编程语言的地位
排名世界第三
Java的优势
- 需求范围广,网站,微信小程序,手机APP等都是Java作为主要语言编写。
- 学习成本低,公认最简单的高级语言。
Java的专业术语
JVM:Java虚拟机,运行Java的必备工具
JRE: Java运行环境,运行Java的必备环境
JDK: Java的开发工具包
其中JDK包含了JRE,JRE又包括了JVM
所以我们如果想使用Java只需要安装JDK即可。
Java的三大版本
- JavaSE Java基础版 重中之重
- JAVAEE Java进阶版 做网站的必备技术
- JAVAME Java进阶版 已过时,只需要知道它的存在,不需要知道怎么用。
Java的开发工具
开发工具 | 优点 | 缺点 |
Eclipse | 免费,简单 | 功能少 |
Idea | 功能多 | 收费,使用复杂,破解复杂 |
新手适合Eclipse,高手适合Idea
新手:掌握程度在java面向对象设计,JavaWeb程序设计
高手:SSM框架,SpringBoot框架
Java注释的分类
什么是注释:方便程序员阅读理解代码的用处。注释不会被java运行。
意思就是:写了仅仅是给程序员看的。
Java有3个类型的注释。
1.单行注释。把当前行注释掉 例如: // 注释内容
2.多行注释。把多行都注释。虽然可以使用多个单行注释来代替 /* */
3.文档注释。和多行注释类似,用途较少,一般是写文档用的 /** */
解释第一个源文件的相关意义
package com.yyzy.test; //上述一行代码,是每个类(一个Java源文件)都必备的 //表示这个类在哪个包(路径)下 /* 每个类的模板都是以下格式:其中Xxx必须和类名(源文件名)保持一致 public class Xxx { //若干代码 } */ // Java源代码的运行入口(从哪里开始运行):都是如下格式: /* public static void main(String[] args) { //这里的第一行就是运行的第一行代码 } //以上方法又称为:main方法 */ //System.out.println("我的第一个Java程序"); 表示打印制定的内容 //如果是字符记得加双引号 public class Test1 { public static void main(String[] args) { System.out.println("我的第一个Java程序"); } } |
课堂练习,创建一个类。要求运行该类,在控制台打印5句
package com.yyzy.test; public class Test2 { public static void main(String[] args) { //快捷键1:alt + / 表示根据你的输出内容进行对应的提示 //例如输入main 就提示入口函数 //例如输入syso 就提示打印输出代码 System.out.println("我是汉字所有加双引号"); System.out.println("i am english so 也要加双引号"); System.out.println(12345);//我是数字就不需要加了 } } |
讲解Java的8大基本数据类型
数字类型: byte short int long
字符类型: char
布尔类型: boolean
浮点类型: float double
1字节:byte boolean
2字节:char short
4字节: int float
8字节:long double
Java中的数据类型分类:
A.基本数据类型
B.引用数据类型
Java中的引用数据类型:
String 数组(Array) 任何Class,不管是你写的类还是JAVA自带的类。
如何声明一个数据
- 记得在main方法里面写。
- 语法: 数据类型 变量名 = 变量值;
- 变量名的命名规范:小驼峰命名法:首字母小写。后续每个单词的首字母大写。
//如何声明数据: 语法: 数据类型 变量名 = 变量值; //例如声明一个年龄为18岁 byte abc = 18;//abc表示我的年龄 short age2 = 18; int age3 = 18; long age4 = 18; //字符类型:只能声明单个字符。用单引号声明即可 //例如声明性别: char sex = '男'; //例如钱包余额 如果用float存放小数,记得在后面补上f float money = 11.5f; double money123 = 115.55; //布尔类型:只能存放true或false 不用加引号 //你是猪吗? boolean isPig = true; //重点掌握:int char double boolean //原因:整数类型int 绰绰有余 //char:8个基本数据类型只有char可以存储字符(汉字 字母) //double:存储的范围比float大。且更加精确 //boolean:只有boolean可以存储布尔类型 |
常见的运算符
//java中常见的运算符 //1.赋值运算符 = 将右边的值赋值给左边 // int a = 123; // int b = a; // System.out.println(a); // System.out.println(b); //算术运算符 + - * / // int a = 10; // int b = 11; // System.out.println(a+b); //算术运算符 % 取余数 // System.out.println(10%3);//1 //算术运算符 ++ -- //语法 a++ 和 a-- 表示先用(执行)在加或减 // int a = 10; // a++; // System.out.println(a);//11 // int a = 10; // System.out.println(a++);//10 //语法: --a ++a 先加减再用 // int a = 10; // --a; // System.out.println(a);//9 // int b = 10; // ++b; // System.out.println(b);//11 //关系运算符: //> >= < <= == != 他们的返回值都是boolean类型 // int a = 10; // int b = 9; // System.out.println(a>b); //逻辑运算符 && 短路与 || 短路或 // 语法如下: 表达式1 && 表达式2 //两个表达式都是true 才返回true //如果一个为false 那么结果就是false //运算从左到右。所以如果第一个式子为false 将不会执行第二个式子。 // int a = 10; // int b = 9 ; // System.out.println(a>b && b<a);//true // System.out.println(a>b && b++<a);//true // || 短路或 // 语法如下: 表达式1 || 表达式2 //两个表达式都是false 才返回false //如果一个为true 那么结果就是true //运算从左到右。所以如果第一个式子为true 将不会执行第二个式子。 //& 和 | : //和上述用法完全一致,唯一区别:没有短路功能 //&和| 左右两边的式子都会执行 //例题: // int a = 10; // int b = 9; // System.out.println(a<b && a++>10 );//false // System.out.println(a); // int a = 10; // int b = 9; // System.out.println(a<b & a++>10 );//false // System.out.println(a); //三元表达式:语法:表达式1?值1:值2 //表示:如果表达式1为true就是值1 反之就是值2 // int age = 20; // System.out.println(age>18?"成年":"未成年"); |
JAVA的语法(if if-else嵌套等等)
知道代码的顺序是从上至下的,但是可以通过分支语句来改变代码的执行顺序。
常见的分支: if-else swtich-case
* 其中if-else 分为以下三类:
* 1.简单if-else 语法如下:
* if(条件){
* 满足执行这里
* }else{
* 不满足执行这里
* }
* 自定义一个变量性别并赋值。
如果性别为男,输出男,反之输出女。
*/
// char sex = '男';//自拟变量值
// if(sex=='男') {
// System.out.println("为男");
// }else {
// System.out.println("为女");
// }
2.多重if-else
* 习题2:
自定义一个分数并赋值。
如果分数大于80小于100输出优秀
如果分数大于60小于80输出及格
如果分数大于0小于60输出不及格
*/
// int score = 75;
// if(score>80 && score<100 ) {
// System.out.println("优秀");
// }else if(score>60 && score<80) {
// System.out.println("及格");
// }else {
// System.out.println("不及格");
// }
3.嵌套if:
自定义一个变量性别和年龄。
如果是男且年龄大于18岁就输出成年男性,反之输出未成年男性。
如果是女且年龄大于18岁就输出成年女性,反之输出未成年女性。
*/
// char sex = '男' ; int age = 20;
// if(sex=='男') {
// if(age>18) {
// System.out.println("成年男性");
// }else {
// System.out.println("未成年男性");
// }
// }else {
// if(age>18) {
// System.out.println("成年女性");
// }else {
// System.out.println("未成年女性");
// }
// }
//注意事项:
//输出结果为: 222
// int age = 5;
// if(age>10) {
// System.out.println(111);
// }
// System.out.println(222);
//输出结果为 111 222
int age = 5;
if(age>10)
System.out.println(111);
System.out.println(222);
//总结:如果if语句没有大括号,那么只有紧紧跟着if的第一行代码才属于if的括号内部。
//常见的分支结构2: switch-case
//如果需要判断的条件很多,就不适合用if-else
//例如:每个月有多少天 如果需要用If-else实现 可能需要写12个if 很累赘
//语法如下:
/*
switch(表达式){
case 常量值1:
代码;
break;
case 常量值2:
代码;
break;
case 常量值3:
代码;
break;
.......
default:
代码;
}
*/
//例如自定义一个月份。输出该月有多少天 假设是闰年。
int month = 11;
// switch (month) {
// case 1:
// System.out.println("31天");
// break;
// case 2:
// System.out.println("29天");
// break;
// case 4:
// System.out.println("30天");
// break;
// case 5:
// System.out.println("31天");
// break;
// case 6:
// System.out.println("30天");
// break;
// case 7:
// System.out.println("31天");
// break;
// case 8:
// System.out.println("31天");
// break;
// case 9:
// System.out.println("30天");
// break;
// case 10:
// System.out.println("31天");
// break;
// case 11:
// System.out.println("30天");
// break;
// case 12:
// System.out.println("31天");
// break;
// default:
// System.out.println("请输入合法数字");
// }
//如果有多个case可以进入相同的分支,可以合并case。
int month = 11;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("31天");
break;
case 2:
System.out.println("29天");
break;
case 6:
case 9:
case 11:
case 4:
System.out.println("30天");
break;
default:
System.out.println("请输入合法数字");
}
//注意事项:break的存在与否
//输出结果1
// int num = 1;
// switch (num) {
// case 0:
// System.out.println(0);
// break ;
// case 1:
// System.out.println(1);
// break ;
// case 2:
// System.out.println(2);
// break ;
// case 3:
// System.out.println(3);
// break ;
// }
// }
//输出结果为:1 2 3
//总结:如果switch中进入了某个case,但是case中没有break
//那么后续即使不满足case也会执行下去。直到程序结束或遇到break。
// int num = 1;
// switch (num) {
// case 0:
// System.out.println(0);
// case 1:
// System.out.println(1);
// case 2:
// System.out.println(2);
// case 3:
// System.out.println(3);
// }
java中的常见循环:
分为三种for循环 while循环 do-while循环
//三种循环可以互相替代。
for循环的语法:
/*
for(初始化表达式; 判断表达式 ; 累加器 ){
循环体
}
*/
// 例如:声明一个变量存储1-10的累加,并输出。
// int sum = 0;
// for(int i = 1; i<=10 ; i++ ) {
// sum = sum + i;
// }
// System.out.println(sum);
// int sum = 0;
// for(int i = 10; i>=1 ; i-- ) {
// sum = sum + i;
// }
// System.out.println(sum);
//注意事项1: 以下代码表示什么意思
// for(;;);//死循环
// System.out.println(11);//Unreachable code 无法到达的代码
//注意事项2:
for循环缺失括号 和if的缺失括号 后果一致,紧紧跟着for循环的第一行代码才是for循环的执行体.
// for(int i = 10; i>=1 ; i--)
// System.out.println(1);//输出10个1
// System.out.println(2);//输出1个2
//注意事项3:for循环的执行顺序
// for(aaa; bbb ; ccc ) {
// ddd;
// }
//执行顺序:aaa bbb ddd ccc bbb ddd ccc 以此循环 如果bbb不满足就跳出了
// int b = 1;
// int a;
// for(a = 1 ,b++ ;a<=10&&b++>0;a++,b++) {
// System.out.println(b);
// }
// System.out.println(b);
如何用break跳出多重循环:
public class Test6 {
public static void main(String[] args) {
abc:for(int i = 1;i<=10;i++) {
System.out.println(i);
for(int j = 1;j<=10;j++) {
if(j==5) {
// break;//这里的break,仅仅是跳出里面的循环
//break如何跳出多重循环
//1.在指定的循环左边加上xx:
//2.break xx; 即可
break abc;
}
System.out.println(j);
}
}
System.out.println("正常结束了");
}
}
while循环的语法
/*
while(表达式){
循环体
}
*/
//计算1-10的累加:
// int sum = 0;
// int i = 1;//从1开始加
// while(i<=10) {
// sum = sum + i;
// i++;
// }
// System.out.println(sum);
do while循环
唯一的区别:先执行一次do(一定执行),再去判断
// int sum = 0;
// int i = 1;
// do {
// sum = sum + i;
// i++;
// } while (i<=10);
// System.out.println(sum);
java中的数组
// java中的数组可以存储多个类型相同的数值的一个容器。
// 有以下特点:
// 1、Java语言中的数组是一种 引用数据类型。不属于基本数据类型。
// 2、数组实际上是一个容器,可以同时容纳多个元素。
// 3、数组一旦创建,长度不可变。
// 语法: 数据类型 变量名[] = new 数据类型[长度];
// int arr[] = new int[10];
// 上述代码表示:定义一个长度为10,类型为int类型的数组
创建数组的方式:
静态初始化 和 动态初始化
//静态初始化:声明数组的同时就将值给定死了。
// int arr[] = {1,2,3,4,5,6,7,8,9};
//动态初始化:声明数组的时候,就只声明长度,内容后续再赋值
// int arr[] = new int[100];
// arr[0] = 123;
// arr[1] = 456;
如何获取数组的长度
通过调用数组length属性 // System.out.println(arr.length);
如何获取数组的指定元素的值
//根据下标来。从0开始计算。每次累加1
// System.out.println(arr[1]);//456
// System.out.println(arr[6]);//因为20行并没有赋值,且数组的类型为int类型。所以默认值为0
// System.out.println(arr[10]);//运行时出下标溢出异常
如何遍历数组
最常见的方式:通过for循环便利
// for(int i = 0 ;i<arr.length;i++) {
// System.out.println(arr[i]);
// }
习题
声明一个数组,里面有10个不同值的int类型数值。求该数组的最大值并输出。
int a[] = {31,534,654,7,65,678,769,789,9,79789,879};
int max = a[0];//假设数组的第一个数就是最大值
for(int i = 1;i<a.length;i++) {
if(max<a[i]) {
max = a[i];
}
}
System.out.println(max);
Java中的方法和调用
public class Test5 {
public static void a1() {
System.out.println("我是方法1");
}
//创建一个方法:方法的输出为一个数字
public static int a2() {
return 122;
}
如果某一段代码需要经常使用,那么建议将其放在方法内部。调用的时候,只需要通过方法调用即可。
方法分为两大类:
// A. 没有返回值的方法
// B. 有返回值的方法
A语法如下:
/*
public static void 方法名(参数列表){
代码体;
}
*/
B语法如下:
/*
public static 数据类型 方法名(参数列表){
代码体;
return 数据类型对应的返回值;
}
*/