java基础
1.java语言跨平台原理
java程序可以在任意os上运行:在不同的os上运行不同的JVM实现跨平台
2.JRE和JDK
JRE :java运行时环境,包含JVM和运行时所需的核心类库
JDK:java程序开发工具包,开发Java程序必须安装JDK。
- 编译工具javac.exe
- 运行工具java.exe
3.JDK的下载和安装
oracle官网下载JDK
所有的开发工具安装在统一目录下方便管理
常见的目录:
- bin:该路径下存放了JDK的各种工具命令,java和javac存放在该目录下
- conf:该路径下存放了JDK相关的配置文件
- include:该路径下存放了平台特定的头文件
- jmods:存放JDK各种模块
- legal:JDK各模块授权文档
- lib:JDK补充JAR包
- 其余文件为说明性文档
4.常用Dos命令
- 盘符名称: E:表示切换到E盘
- dir 查看当前路径下的内容
- cd 目录 进入单级目录
- cd … 退回上级目录
- cd 目录1\目录2… 进入多级目录
- **cd \ ** 回退到盘符目录、
- cls 清屏
- exit 退出命令提示符窗口
5.PATH环境变量配置
bin下的java和javac本来不能直接在命令行中运行,必须指定到存放的目录下才能运行。为了简化其的使用,配置环境变量。
- 打开控制面板高级系统设置
- 点击环境变量在系统变量中进行新建配置(变量名为JAVA_HOME,变量值为JDK的安装目录)
- 编辑系统变量中的Path变量的值
6.命令行运行程序
-
开发java程序的三个步骤:
- 编写程序 记事本
2. 编译程序 javac
3. 执行程序 java
- 编写程序 记事本
-
cmd步骤:
- 建立文件xxx.java,编写好程序内容
- 打开cmd,进入到文件xxx.java所在的目录,进行编译文件,得到class文件(指令:javac hello.java)
- 运行xxx.java(java hellio)不用后缀名即可
7.BUG的解决
识别BUG,分析BUG,解决BUG
8.NotePad软件的安装和使用
配置时需要注意的:
tip:按Tab进行自动补全
9.基础语法
-
注释:在程序指定位置添加的说明性信息
- 注释的分类:
- 单行注释://
- 多行注释:/* 注释信息 */
- 文档注释 😕** 注释信息 **/
- 注释的分类:
-
关键字:java语言赋予了特定含义的单词
- 关键字全部小写
- 代码编辑器一般有特殊颜色标记
-
常量:在程序运行过程中,值不能改变的梁
- 常量分类:
- 字符串常量:用双引号括起来的内容 ”XXX“
- 整数常量:不带小数的数字 666
- 小数常量:带小数的数字 6.66
- 字符常量:用单引号括起来的内容 ’X‘
- 布尔常量:布尔值,表示真假 true
- 一个特殊的值,空值 null
- 常量分类:
public class ConstantDemo{
public static void main(String[] args){
//字符串常量
System.out.println("Hello");
//整数常量
System.out.println(666);
//小数常量
System.out.println(6.66);
//字符常量
System.out.println('a');
//布尔常量
System.out.println(true);
//空常量不能直接输出
//System.out.println(null);
}
}
-
数据类型:
- 计算机的存储单元:计算机存储设备的最小信息单位叫bit,计算机中最小的存储单元叫字节,字节是由连续的八个位组成
1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
- java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型分配不同大小的存储空间。
内存占用情况和取值范围:
- 变量:在程序运行过程中,其值可以改变的量
- 变量的组成:变量名+数据类型+变量值 int a=10;
- 变量的使用:取值和修改值
public class VariableDemo{
public static void main(String[] args){
//定义变量
int a=10;
//输出变量
System.out.println(a);
//修改变量
a=20;
System.out.println(a);
}
}
-
变量的使用注意事项:
1.变量名不能重复
2.未赋值不能直接使用
3.long:
//直接赋值会报错(默认等号右边为int类型) long i=1000000000; //long类型赋值时末尾需要加L long i=1000000000L;
4.float:
//直接赋值会报错(默认等号右边为double类型) float i=13.14; //long类型赋值时末尾需要加F float i=13.14F;
-
标识符:用来定义名称的字符,由数字、字母、下划线、¥组成
-
不能以数字开头
-
不能是关键字
-
区分大小写
-
常见命名约定:
-
==小驼峰:方法和变量==
==大驼峰:类==
-
类型转换:
- 自动类型转换:把一个表示数据范围小的数值赋值给一个表示数据范围大的变量
double d=10;
System.out.println(d);
//输出10.0
byte b=10;
short s=b;
int i=b;
// char c=b;不可以
//char c='c'; int i=10; char a =c+i;不可以 int a =c+i;可以
- 强制类型转换:把一个表示数据范围大的数值赋值给一个表示数据范围小的变量
int k=(int)88.88;
System.out.println(k); //88
-
运算符:
-
算数运算符:+、-、*、/、%
-
/、%分别得到商数和余数
-
整数相除只能得到整数,要想得到小数必须有浮点数参与
-
字符的+操作:
int i=10; char c='A'; System.out.println(i+c);//75 表示'A'的值为65
-
-
字符串的+操作:
System.out.println("it"+"dogec"); //itdogec
System.out.println("dogec"+666); //dogec666
System.out.println(666+"dogec"); //666dogec
System.out.println(666+66+"dogec");//732dogec
System.out.println("dogec"+666+66);//dogec66666
- 赋值运算符:=、+=、-=、*=、/=、%=
short a =20;
//a+=20;
System.out.println(a); //报错,参见类型转换
-
自增自减运算符:++、- -
int i=10; int j=i++; //先赋值再自加 System.out.println(j); //10 int j=i; System.out.println(j); //11 int j=++i; System.out.println(j); //12
-
关系运算符: ==、!=、>、<、>=、<= 结果返回bool类型的值
int i=10;
int j=20;
System.out.println(i==j); //false
System.out.println(i=j); // 20 把j的值赋值给i,然后输出i
-
逻辑运算符:与或非 、异或(&、|、!、^)
-
对于^,相同为false,不同为true
-
短路逻辑运算符:&& 、||
区别:
int i=10,j=20; System.out.println(i++>100&j++>100); System.out.println(i); //11 System.out.println(j); //21 int i=10,j=20; System.out.println(i++>100&&j++>100); System.out.println(i); //11 System.out.println(j); //20
-
- 三元运算符:如:a>b?a:b;
int a=10,b=20;
int max=a>b?a:b; //获取两个数据中的较大值 若为true则赋值为a,否则赋值为b
System.out.println(max); //20
10.数据输入
- 导包 import java.util.Scanner
- 创建对象 Scanner sc=new Scanner(System.in);
- 接收数据 int i=sc.nextInt();
import java.util.Scanner;
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
11.流程控制语句
-
顺序结构:按照代码的结构依次执行
-
分支结构(if ,switch)
-
if语句:
- 格式一:if
int a=10; int b=10; if(a==b){ System.out.println("ab相等"); }
- 格式二:if else
int a=10; int b=10; if(a==b){ System.out.println("ab相等"); }else{ System.out.println("ab不相等"); }
- 格式三:if else if else
import java.util.Scanner; Scanner sc=new Scanner(System.in); int week=sc.nextInt(); if(week==1){ System.out.println(1); }else if(week==2){ System.out.println(2); }else{ System.out.println(3); }
-
switch语句:
switch(表达式){
case 值1:
语句1;
break;
case 值1:
语句2;
break;
…
default:
语句n;
}
- 表达式:取值类型为byte、short、int、char、JDK5以后可以是枚举,JDK7以后可以是String
- case:后跟与表达式比较的值
- break:表示中断结束switch语句,不写break将出现穿透现象
- default:上面的情况都不匹配时执行
import java.util.Scanner; Scanner sc=new Scanner(System.in); int week=sc.nextInt(); switch(week){ case 1: System.out.println(1); break; case 2: System.out.println(2); break; default: System.out.println(3); }
-
-
循环结构(for while,do…while)
- for循环:
for(int i=1;i<=5;i++){ System.out.println("hello world"); }
- while循环(不知道循环多少次较为适用):
int i=1;
while(i<=5){
System.out.println("hello world");
i++;
}
- do while 语句:
int i=1;
do{
System.out.println("hello world");
i++;
}while(i<=5);
-
三种循环的区别
- do while至少执行一次
- for中的循环变量为局部变量,while可为全局变量
- 死循环 命令行中Ctrl+C停止死循环
for(;;){ System.out.println("hello world"); } while(true){ System.out.println("hello world"); } do{ System.out.println("hello world"); }while(true)
12.跳转控制语句
continue、break 均用于条件判断中
- continue:跳过某次循环体内容的执行,继续下一次执行
- break:终止循环体内容的执行,结束当前整个循环
for(int i=1;i<=5;i++){
if(i%2==0){
continue;
}
System.out.println(i); //1 3 5
}
for(int i=1;i<=5;i++){
if(i%2==0){
break;
}
System.out.println(i); //1
}
13.循环嵌套
循环语句中包含循环语句
for(int hour=0;hour<=23;hour++){
for(int minute=0;minute<60;,minute++){
System.out.println(hour+"时"+minute+"分");
}
}
14.Random
作用:用于产生一个随机数
- 导包 import java.util.Random
- 创建对象 Random r=new Random();
- 接收数据 int number=r.nextInt(10); //随机数取值范围为[0,10)
import java.util.Random;
Random r=new Random();
int number=r.nextInt(10); //随机数取值范围为[0,10)
System.out.println(number);
/*获取一个1-100之间的随机数*/
int number=r.nextInt(100)+1;
System.out.println(number);