java是一门跨平台、半解释半编译的面向对象的语言
1、Java的突出特点
- 简单
- 开源
- 多线程
- 安全
- 面向对象
- 半解释半编译
2、跨平台的原理
所谓跨平台:一处编译,处处运行
核心原理:JVM,全称Java Virtual Machine,也就是Java虚拟机,用于解释Java的字节码文件(.class文件)
补充:
开发人员在编辑完Java代码后,保存为.java的源文件
源文件在经过编译后,会生成.class的字节码文件
最后由JVM解释字节码文件
3、JDK、 JRE 、JVM的关系
- JDK全称Java开发工具包,其中包含了JRE、Java调试、编译等工具;
- JRE全称Java运行环境,其中包含JVM和java运行工具等;
- JVM全称Java虚拟机,跨平台的核心
图示
4、Java标识符
- 类名用帕斯卡命名法(单词首字母大写,例如StudentName)
- 方法名和变量名用驼峰命名法(第一个单词首字母不大写,其他单词首字母大写,例如studentName)
- 最重要的是要见名知义
命名规则:
由数字、字母、下划线组成,但是多了一个$,其中数字不可以开头,当然也不可以使用Java中的关键字(例如for、 break、case等),Java中区分大小写,也就是a和A不一样
Java的数据类型
- 原始类型
各类型字节大小,以及范围
**程序中默认整数是int类型,而小数是double类型,所以写long类型要在赋值后面加入l或L,同样的float类型,赋值后面加入f或F
- 引用类型
类
接口
数组
以上三个内容后期详细更新
5、运算符
算术运算符
特别注意+的应用
关系运算符
注意“=”是赋值符号“==”是判断相等
逻辑运算符
符合赋值运算符
条件运算符
表达式一?表达式二:表达式三
表达式一为true运行表达式二,表达式二位false,运行表达式三
//四年一闰,百年不闰,四百年再闰
//year是“4的倍数但不是100的倍数,或者是400的倍数”
int year = 2022;
String res = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? "是闰年" :
"不是闰年";
System.out.println(year + res);
6、条件语句
if语句(条件是范围)
1、单分支
if(判断条件,其结果为布尔值){
条件满足运行的代码
}
2、双分支
if(判断条件,其结果为布尔值){
条件满足运行的代码
}else{
条件不满足运行的代码
}
3、多分支
if(判断条件,其结果为布尔值){
条件满足运行的代码
}else if(条件2){
条件2满足运行的代码
}else if(条件3){
条件3满足运行的代码
}else{
条件都不满足运行的代码
}
4、if嵌套
if(){
if(){
}
}
switch语句(一个变量的值能够一一列举)
switch(变量){//要判断的变量,只能是非long整型、字符型char和字符串String和枚举类型
case 值:
//如果变量的值与当前case的值匹配,执行这里的代码
break;//如果没有break,下面的代码也会一直运行
case 值:
//如果变量的值与当前case的值匹配,执行这里的代码
break;
...
default:
//如果没有任何值与变量的值匹配,执行这里的代码
break;
}
例子(判断某年某月有多少天,下面代码比较冗余,先判断月会更简洁)
import java.util.Scanner;
public class task03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
if(year%4==0 && year%100!=00 || year%400==0){
switch (month){
case 2:
System.out.println("有29天");
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("月有31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("月有30天");
break;
}
}
else{
switch (month){
case 2:
System.out.println("有28天");
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("月有31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("月有30天");
break;
}
}
}
}
if语句和switch语句的补充
switch语句可以改写为if语句,但是if语句不一定能改写为switch语句
return可以让if语句和switch语句停止执行后面的代码,但是switch语句一般使用break
7、循环
重复执行某些代码
while(可能一次都不执行)
while(循环条件){//小括号中的条件结果为boolean值
满足循环条件时重复执行的代码
}
do while(至少执行一次)
do{
满足循环条件时重复执行的代码
}while(循环条件);
用于用户登录验证有奇效
for(可能一次都不执行)
//表达式1为定义循环变量
//表达式2为判断循环条件
//表达式3为更新循环变量
for(表达式1;表达式2;表达式3){
循环体
}
循环控制
所有的循环都可以使用break和return停止循环
public static void main(String[] args) {
int i = 1;
while (true) {//死循环
System.out.println("xxxxx");
if (i++ == 10) {
break;//退出整个循环,程序继续执行循环之外的内容
// return;//退出整个方法,程序不再执行之后的代码
}
}
System.out.println("结束");//如果循环中有return,不会执行这句话
}
int i = 1;
while (i < 10) {
if (i++ % 2 == 0) {
continue;//如果遇到continue,结束本次循环(不再执行continue之后的代码),直接进入下一
次循环
}
System.out.println(i);
}
8、数组(一组类型相同的有序集合)
数组实际上是内存中的一块连续空间
定义、以及初始化数组
int[] list = new int[10];
list[0]=123;//索引从0开始
list[9]=22;//最大索引为数组大小-1
list[22]=5;//能通过编译,但是在运行时会抛出数组越界异常
静态赋值
9、数组工具类Arrays