JavaSE基础
Java简介
- Java是一门面向对象的程序设计语言
- 1995年由sun公司发布
- 2010被Oracle收购
- JavaSE:Java标准版
- JavaEE:Java企业版
- JavaME:Java微型版
JVM
- Java虚拟机
- 一次编译,到处运行
JDK
- Java语言的软件开发工具包
- 两个主要组件:
- javac 编译器,将源程序转成字节码
- java 运行编译后的java程序(.class后缀的)
- JDK=JRE+开发工具集
- JDK8:长期支持版
JDK环境搭建
到oracle官网下载安装
cmd输入java -version
配置环境变量:
高级系统设置
环境变量
设置用户变量
path编辑,新建,输入jdk路径
配置环境变量:
用户变量-新建-变量名:JAVA_HOME 变量值:JDK路径
改path,%JAVA_HOME%\bin
JRE
- Java运行环境
- 包括JVM、Java核心类库和支持文件
- 如果只需要运行Java程序,下载并安装JRE即可
- 如果要开发Java软件,需要下载JDK
- 在JDK中附带有JRE
- JRE=JVM+JavaSE标准类库
Eclipse
IntellijIDEA
- Java编程公认最好的IDE
- psvm:自动生成主方法
- ctrl+shift+回车:自动增加结尾分号
- sout:输出语句
Java基础语法入门
public class Hello{
public static void main(String[]args){
System.out.println("");
}
}
变量与常量
标识符
- 命名规则:
- 可以由字母、数字、下划线和美元符组成,不能以数字开头
- 严格区分大小写
- 不能是Java关键字和保留字
- 最好能反映出其作用
关键字
- 一点一点记,50多个关键字
变量
变量类型、变量名和变量值
变量名命名规则:
- 满足标识符命名规则
- 符合驼峰法命名规范
- 尽量简单,见名知意
- 长度没有限制
类的命名规范:
- 满足Pascal命名法规范(每个单词的首字母大写)
数据类型:
基本数据类型
数值型
整型
- byte(字节型)
- 1个字节
- short(短整型)
- 2个字节
- int(整型)
- 4个字节
- long(长整型)
- 8个字节
- byte(字节型)
浮点型
用科学计数法表示浮点型数据1.23E5,1.23×10的五次方
- float(单精度浮点型)
- 4个字节
- 在字面值后加F或f
- double(双精度浮点型)
- 8个字节
- 默认值,也可以在值后加d或D
- float(单精度浮点型)
字符型(char)
- 2个字节
- 单引号内的单个字符
布尔型(boolean:true、false)
- 1个字节
引用数据类型
- 类(class)
- 接口(interface)
- 数组
变量声明:
格式:数据类型 变量名;
赋值:
使用=运算符进行赋值
变量的初始化
基本数据类型变量的存储
类定义的变量又叫对象
按作用范围分:
类级、对象实例级、方法级、块级
ASCII码
Unicode编码(统一码)
char c='\u005d';
在值前面加前缀\u
字符串字面值:字符串不属于基本数据类型,它是类
双引号引起来的0个或多个字符
String s1="Hello"; System.out.println(s1); String s2="A\u005d\u005fB"; System.out.println(s2);转义字符
| 转义字符 | 描述 |
| -------- | ---------------------------- |
| \uxxxx | 4位16进制数所表示的字符 |
| \' | 单引号字符 |
| \" | 双引号字符 |
| \ | 反斜杠字符 |
| \r | 回车(光标回到这一行最前面) |
| \n | 换行 |
| \t | 横向跳格 |
| \b | 退格 |
类型转换
自动类型转换和强制类型转换
自动类型转换(隐式类型转换)
类型范围小的变量可以直接赋值给类型范围大的变量
实线:无信息丢失的数据类型转换
虚线:可能在转换时,出现精度丢失

如果A类型的数据表示范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换
如:double d = 123.4;
float f = (float)d;
强制类型转换的格式:(数据类型)数值
常量
- final int n = 5;
- 不能修改
- 一般常量名用大写来表示
运算符
- 表达式:由运算符和操作数组成
算术运算符
进行基本的算术运算,加减乘除
| 算术运算符 | 名称 | 举例 |
|---|---|---|
| + | 加法 | 5+10=15 |
| - | 减法 | 10-5=5 |
| * | 乘法 | 3*6=18 |
| / | 除法 | 36/4=9 |
| % | 求余数 | 13%3=1 |
| ++ | 自增 | int n=3;n++ |
| -- | 自减 | int n=4;--n |
分子分母都是整型时,结果为整除后的结果
自增自减运算符
++、--
| 表达式 | 执行方式 | 结果(num1=1) |
|---|---|---|
| num2=++num1; | num1=num1+1;num2=num1; | num1=2;num2=2; |
| num2=num1++; | num2=num1;num1=num1+1; | num1=2;num2=1; |
| num2=--num1; | num1=num1-1;num2=num1; | num1=0;num2=0; |
| num2=num1--; | num2=num1;num1=num1-1; | num1=0;num2=1; |
赋值运算符
变量 = 表达式;
赋值运算符从右往左运算!
+=、-=、*=、/=、%=
关系运算符
比较运算符用于判断两个数据的大小
比较的结果是一个布尔值
大于、小于、大于等于、小于等于、==、!=
‘A’>‘B’结果为false,比较的是两个字符的ASCII值
if条件结构
if(a > 0){
a = 10;
}
if-else条件结构
if(a > 0){
a = 10;
}
else{
a = 20;
}
逻辑运算符
| 名称 | 运算符 | |||
|---|---|---|---|---|
| 与 | &&或& | |||
| 或 | \ | \ | 或\ | |
| 非 | ! |
&&运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算
||运算符又叫短路运算符,如果第一个表达式的值就能决定表达式最后的结果,运算符右边的表达式就不再计算
条件运算符
三目运算符
语法:布尔表达式?表达式1:表达式2
当布尔表达式的值为true,则返回表达式1的值,否则返回表达式2的值
例:max = a>b?a:b;
运算符优先级
从上到下优先级逐渐降低
| 运算符 | 描述 | ||
|---|---|---|---|
| () | 括号 | ||
| !,++,-- | 逻辑非,自增,自减 | ||
| *,/,% | 乘法除法取余 | ||
| +,- | 加法减法 | ||
| <,<=,>,>= | 小于,小于等于,大于,大于等于 | ||
| ==,!= | 等于,不等于 | ||
| && | 逻辑与 | ||
| \ | \ | 逻辑或 | |
| =,+=,*=,/=,%=,-= | 赋值运算符,复合赋值运算符 |
选择结构
多重if结构
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
else
语句n;
嵌套if结构
if(表达式1){
if(表达式2){
if(表达式3){
语句;
}
}
}else{
语句;
}
switch结构
switch(表达式){
case 常量表达式1:
语句1;break;
case 常量表达式2:
语句2;break;
default:
语句3;
}
循环结构
while循环
while(循环条件){
语句;
}
do-while循环
do{
语句;
}while(循环条件);
- 至少执行一次
- 循环条件后的分号不能丢
for循环
for(表达式1;表达式2;表达式3){
语句;
}
三个表达式都是可以省略的
增强型for循环
又叫foreach循环
循环终止条件:把数组遍历一遍
int[] arr = { 1,2,3,4,5}; for(int n:arr) System.out.println(n);
嵌套循环
break和continue
- break语句可以结束当前循环的执行
- 执行完break语句后,循环体中位于break语句后面的语句就不会被执行
在多重循环中,break语句只向外跳一层
continue语句只能用在循环里
- continue语句可以结束当前循环的执行,但是要继续下一次循环的执行
生成随机数
Random
得到0-9的随机数的实现步骤:
package com.zim.hello; import java.util.Random; public class HelloWorld { public static void main(String[] args) { Random r = new Random(); int number = r.nextInt(10); System.out.println("随机数生成了:"+ number); } }
debug——程序调试
- 让程序员能看清程序每一步的效果,在需要查看结果的时候,使用debug查看实际结果是否与预期结果一致
- 设置断点——debug(F11)——进行单步调试(F6)
多断点调试
快捷键:F8
数组
- 相同类型的数据按顺序组成的一种==引用数据类型==
一维数组
数组的声明
语法格式:数据类型[ ] 数组名;
数据类型 数组名[ ];
int[] myIntArray; int myIntArray[];语法格式一:先声明后创建
数据类型[ ] 数组名;
数组名 = new数据类型[数组长度];
int[] arr; arr=new int[10];语法格式二:声明的同时创建数组(数组长度必须指定)
数据类型[] 数据名 = new数据类型[数组长度];
int[] arr = new int[10];数组会被分配连续的内存空间
数组的初始化
int[] arr = { 1,2,3,4,5,6,7,8,9,10};数组的长度就是初始化时所给数组元素的个数
数组元素的引用
语法格式:数组名[下标]
注意:下标从0开始
数组长度
属性length表示数组的长度,如a.length
二维数组
声明(三种形式):
int[][] intArray; float floatArray[][]; double[] doubleArray[];创建一个2行3列的数组
intArray = new int[2][3];声明数组的同时进行创建
char[][] ch=new char[3][5];创建float类型的数组时,只指定行数
floatArray=new float[3][];每行相当于一个一维数组,需要创建
floatArray[0]=new float[3]; floatArray[1]=new float[4]; floatArray[2]=new float[5];二维数组的初始化
int[][] num={ { 1,2,3},{ 4,5,6},{ 7,8,9}};num数组的行数为num.length
num数组的列数为num[0].length
案例:随机排名
- 某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报,请先依次录入5名员工的工号然后展示出一组随机的排名顺序
- 分析:
- 在程序中录入5名员工的工号存储起来-->使用动态初始化数组的方式
- 依次遍历数组中的每个数据
- 每遍历一个数据都随机一个索引值出来,让当前数据与该索引位置处的数据进行交换
package com.zim.hello;
import java.util.Random;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
int[] codes = new int[5];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < codes.length; i++) {
System.out.println("请您输入当前第"+(i+1)+"个员工的工号:");
codes[i] = sc.nextInt();
}
Random r = new Random();
for (int i = 0; i < codes.length; i++) {
int index = r.nextInt(codes.length);
int temp = codes[index];
codes[index] = codes[i];
codes[i] = temp;
}
for (int i = 0; i < codes.length; i++) {
System.out.println(codes[i]);
}
}
}
键盘输入数据
利用buf调用readLine方法
import java.io.*;
public class class_name(
public static void main(String[] args) throws IOException{
String str;
char c;
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
str = buf.readLine();
c = (char)buf.read();
}
)
利用Scanner类
import java.util.*;
public class class_name{
public static void main(Sring[] args){
Scanner sc = new Scanner(System.in);
int num;
num = sc.nextInt();
}
}
冒泡排序
- 对一组整数按照从小到大的顺序进行排序
| 第一趟 | 34 | 12 | 32 | 53 | 17 | 56 |
|---|---|---|---|---|---|---|
| 第二趟 | 12 | 32 | 34 | 17 | 53 | 56 |
| 第三趟 | 12 | 32 | 17 | 34 | 53 | 56 |
package com.imooc;
public class SortDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {
34,53,12,32,56,17};
int temp;
for(int i=0;i<a.length-1;i++) {
for(int j=0;j<a.length-i-1;j++) {
if(a[j]>a[j+1]) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int n:a) {
System.out.println(n);
}
}
}