一、初始JAVA
1.程序
为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合
2.算法
定义用来解决问题的步骤
3.流程图
4.java SE 平台标准版
5.java EE 平台企业版
6.JDK
java开发工具包
JDK安装成功后配置环境变量。左键我的电脑——属性——高级系统设置——环境变量——PATH属性增加bin、CLASSPATH属性增加lib——win+r——cmd——输入java-version验证
JRE java运行环境
注意:
1.环境变量已经存在时,可以直接编辑,不存在时选择新建
2.在window系统中,使用“;”分号来分隔路径,切勿使用空格
3.在CLASSPATH属性设定中,除设置系统必须的路径外,还需要使用“.”配置当前路径
7.Main方法
public class Welcome{
public static void main(String[] args){
System.out.println("欢迎学习java");
}
}
7.1类的结构
public class Welcome{
}
Welcome类名称,可改,均为英文字母,首字母大写,必须与程序文件的名称完全相同
7.2程序的主方法
public static void main(String[] args){
}
每个程序有且只有一个main()方法
7.3方法内的代码
向控制台输出信息
System.out.println("欢迎学习java"); 会换行
System.out.print("欢迎学习java"); 不换行
8.编译
CD 路径
9.运行
javac 文件名
10.java程序中的注释
10.1单行注释
“//”开头,从“//”开始后的文字都被认为是注释
10.2多行注释
“/*”开头,“/*”结尾,中间的注释
11.java的编码规范
11.1每一行只写一条代码语句,以;分号结束
11.2类名中单词的第一个首字母大写
11.3标点符号均为英文输入状态下的符号
11.4严格区分大小写
二、变量与数据类型
1.变量
1.1声明变量
数据类型 变量名;
int score;
int score1,score2;
英文逗号隔开,可同时声明多个相同类型的变量
1.1.1变量命名规则
a:必须以字母、下划线-、或美元符号$开头
b:可以包含数字,不能以数字开头
c:除下划线-和美元符号$外,不能包含任何特殊字符
d:不能使用java语言中的关键字,如public、int、boolean、void、char。package、double、static等
1.1.2注意
a:java关键字不能用作变量名、类名以及包名
b:变量名在同一程序中不能重复
c:变量名由多个单词组合而成时,第一个单词首字母小写,其后单词首字母大写。(驼峰命名法)
1.2变量赋值
变量名=值;
数据类型 变量名=值;
int score;
string name;
char sex;
score=98;
name="小明";
sex='男';
int age=17;
1.3变量使用
int age=17;
System.out.println(age);
System.out.println("年龄是"+age);
System.out.println("年龄是"+"\t"+age);
打印文字和变量时,不能将变量放在双引号里,需要用+号连接文字
java语言中的\t相当于一个Tab健
2.java中的基本数据类型(8种)
使用规则:根据数据存储的数据来确定,不同的数据存储所需要的内存空间各不相同
2.1整数类型(允许负数)
byte | 占一个字节的整数 | -128~127 |
short | 短整型,占2个字节 | -32768~32767 |
int | 整型,占4个字节 | -231~231-1 |
long | 长整型,占8个字节 | -263~263-1 |
2.2浮点类型(小数类型)
float | 单精度,占4个字节 数值后有后缀F 例:3.14F | -3.4E38~3.4E38 |
double | 双精度,占8个字节 |
2.3字符类型
char | 表示单个字符,占2个字符 | 值必须包含于英文单引号内 例:'A' |
2.4布尔类型 boolean
值:true false
判断真假
2.5字符串 string
必须包含在英文双引号内""
例:string name="小明";
3.控制台的输入
a:Scanner类的导入
必须放在package代码和类定义的代码中间
import java.util.Scanner;
b:Scanner对象的创建
Scanner sc=new Scanner(System.in);
c:获取用户输入的数据
int age=sc.nextInt;
import java.util.Scanner;
public class ScannerDemo{
public static void main(String[] args){
Scanner sc=new Scanner();
int num=sc.nextInt;
}
}
Scanner的常用方法 | |
next() | 获取用户输入的字符串 |
nextInt() | 获取用户输入的整型数据 |
nextDouble() | 获取用户输入的双精度浮点型数据 |
nextBoolean() | 获取用户输入的布尔类型数据 |
nextShort() | 获取用户输入的短整型 |
nextFloat() | 获取用户输入的单精度浮点型 |
next().charAt(0) | 获取用户输入的字符串的第一个字符 |
补充: 随机对象
next(100)的随机数是0—99,所以在此基础上再加1成为100
import java.util.Random;
public class RandomDemo{
public static void main(String[] args){
Random rdm=new Random();
int rdmNum=rdm.next(100)+1;
}
}
4.控制台的输出
4.1使用print()或println()方法
System.out.print(score);
System.out.println("学生成绩为:"+score);
+号将文字说明字符串和变量的值连接起来。两个数字+,表加法
4.2使用printf()方法,格式化输出
可控制输出的精度
System.out.printf("格式化控制符1,格式化控制符2",变量1,变量2...);
double pi=3.1415926;
System.out.printf("%8.2f",pi);
输出为3.14
%8.2f表示8个字符宽度和小数点后两位的精度
转换符格式化数据类型:
f表示浮点数
s表示字符串
d表示十进制整数
三、运算符与表达式
1.赋值运算符
变量名=表达式
左侧只能为一个变量,右侧可以是变量、常量或表达式
结合性:自右向左
2.算术运算符
运算符 | 说明 | 例 |
+ | 加 | 5+3=8 |
- | 减 | 5-3=2 |
* | 乘 | 5*3=15 |
/ | 除 | 5/3=1 |
% | 取余 | 5/3=2 |
注意:参与运算的数值均为整数,则结果也为整数
3.自增(++)自减(--)
无论++在前或在后,都要对它本身操作
对于被赋值的数等号旁是变量先赋值,等号旁是符号先运算
int a=5; a=6
int b=++a; b=6
int a=5; a=6
int b=a++; b=5
4.复合运算符
num=num+5;等同于num+=5;
运算符 | 说明 | 例 |
+= | 加 | |
-= | 减 | |
*= | 乘 | |
/= | 除 | |
%= | 余 |
需要对变量自身进行计算是,建议使用复合赋值运算符
结合性自左向右
int a=6;
a+=a+=6;
24=12+12
等效于a=a+(a+6) 括号增强,运算符优先级
5.关系运算符 boolean类型
关系运算符 | 说明 | 例 |
> | 大于 | 88>100 false |
< | 小于 | 88<100 true |
>= | 大于等于 | |
<= | 小于等于 | |
== | 等于 | |
!= | 不等于 |
字符关系相等:
if("admin".equals(name))
6.换行 \n
例:System.out.printf("%d>%d的结果为:%b\n",num1,num2,result);
7.逻辑运算符
运算符 | 功能 |
&& | 与运算符,同时成立,缺一不可 |
|| | 或运算符,两者中有一个成立即可 |
! | 非运算符,取反 |
8.三目运算符
布尔表达式?表达式1:表达式2
int age=20;
System.out.println(age>=18?"成年":"未成年");
注意:
a:条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符
b:java中条件表达式中的关系表达式值的类型必须为布尔类型只能是true或false
c:条件运算符的结合性是右结合性 自右向左
9.表达式
y=x*(z+10)
y、x、z、10称为操作数
=、*、+称为运算符
10.运算符优先级与结合性
优先级 | 运算符 | 结合性 |
1 | !、++、-- | 从右到左 |
2 | *、/、% | 从左到右 |
3 | +、- | 从左到右 |
4 | >、<、>=、<= | 从左到右 |
5 | ==、!= | 从左到右 |
6 | && | 从左到右 |
7 | || | 从左到右 |
8 | =、+=、-=、*=、/=、%= | 从右到左 |
11.数据类型转换——自动类型转换
无信息丢失转换
byte——>short——>int——>long
char——>int
int——>double
float——>double
有精度损失转换
int——>float
long——>float
long——>double
转换条件:
a:两种类型要兼容,数值类型互相兼容,目标类型大于源类型
b:计算过程中,操作数向大于操作数类型转换,计算结果也为表达式中大操作数的类型
例:int a=10;
float b=12.5f;
float result=a+b;
12.数据类型转换——强制类型转换
(数据类型)表达式
例:int a=(int) (2*3.14*r);
四、条件结构
Java程序的结构有3种:顺序结构、选择结构、循环结构
1.单分支if结构
if(条件表达式){
语句
}
2.双分支if结构
if(条件表达式){
语句1
}else{
语句2
}
3.多重if结构
if(条件表达式1){
语句1
}else if(条件表达式2){
语句2
}else{
语句3
}
4.嵌套if结构
if(条件表达式){
if(条件表达式){
语句1
}else{
语句2
}
}else{
if(条件表达式){
语句1
}else{
语句2
}
}
外层条件成立,才会执行内层的条件语句
5.switch结构
表达式只能是char、整数或string
switch(表达式){
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
.....
default:
语句块n;
break;
}
五、循环结构
1.特征
循环有开始或结束条件
需要重复执行的操作或代码,称为循环操作或循环体
2.while循环
先判断再执行
适用:循环次数不确定
while(循环条件){
循环操作;
}
3.do-while循环
先执行再判断,至少执行一次
适用:循环次数不确定
do{
循环操作;
}while(循环条件);
例:1——100自然数之和
int count=1,sum=0
do{
sum+=count;
count++;
} while(count<=100);
System.out.println(”1——100自然数之和“+sum);
六、for循环
适用:循环次数已知
for(表达式1;表达式2;表达式3){
循环体;
}
表达式1:为循环控制变量赋初值 只执行1次
表达式2:条件判断
表达式3:更新循环变量 变量++、--操作
跳转语句:
break语句:结束循环,只能用在while语句、do-while语句、for语句以及switch结构中
continue语句:跳转下一次循环
七、类和对象
1.类的定义
访问修饰符 class 类名{
//类的属性
//类的方法
}
2.方法
访问修饰符 返回值类型 方法名(参数){
//方法体
}
3.对象的创建
类名 对象名=new 类名();
4.对象的使用
对象名.属性 //引用对象的属性
对象名.方法名() //引用对象的方法
5.构造方法
类名 对象名=new 类名()
构造方法访问修饰符 方法名(参数列表){
方法体
}
注意:
构造方法的名称必须和类名保持一致
构造方法不能有返回值类型
构造方法一般用public修饰
构造方法可以完成对类成员变量的初始赋值
八、方法
1.自定义方法的定义格式
访问修饰符 返回值类型 方法名(形式参数列表){
方法体
}
多个参数用逗号隔开
2.自定义方法调用的通用格式
数据类型 变量名=方法名(实际参数列表);
3.无参数无返回值
3.1.定义
访问修饰符 void 方法名(){
方法体
}
3.2.调用
对象.方法名();
4.有参数无返回值
4.1.定义
访问修饰符 void 方法名(形式参数列表){
方法体
}
4.2.调用
对象.方法名(实际参数列表);
九、方法与参数类型
1.有参有返回值的方法的定义和调用
访问修饰符 返回值类型 方法名(形式参数列表){
方法体
return 表达式;/return;
}
数据类型 变量名=方法名(实际参数列表)
2.参数的数据类型
2.1.值类型的参数
形参改变时,实参不会同步改变,想改变,使用return关键字返回
2.2.引用类型的参数——内存地址拷贝
形参改变时,实参也改变
十、数组
1.一维数组
1.1.声明数组
数据类型[] 数组名
例:int[] age;
1.2.创建数组
数组名=new 数据类型[数组长度]
例:age=new int[10];
注意:
int length=10;
int[] age;
age=new int[length];
1.3.初始化数组
数据类型[] 数组名=new 数据类型[] {值1,值2,....,值n};
int[] age=new int[] {17,16,18,21,22}
数据类型[] 数组名={值1,值2,....,值n};
int[] age={17,16,18,21,22}
1.4.引用数组元素
数组名.length
最后一个元素的下标为:数组名.length-1
2.数组元素的默认值
int | 0 |
float | 0.0f |
double | 0.0 |
boolean | false |
char | '\0' |
String | null |
3.增强型for循环
for(数据类型 变量名:数组){
//循环体
}
专用于数组或集合的遍历操作
4.求最大最小值
Scanner sc=new Scanner(System.in);
//定义数组,存储用户输入的成绩
int[] scores=new int[5];
//声明变量,存储最高成绩和最低成绩
int max;
int min;
//通过循环对数组进行赋值
System.out.println("请输入5位同学的成绩");
for(int i=0;i<scores.length;i++){
scores[i]=sc.nextlnt();
}
//求解最大值
//将数组第一个元素直接赋值max
max=scores[0];
min=scores[0];
//数组其余元素与max进行比较,将较大值赋给max
for(int i=1;i<scores.length;i++){
if(scores[i]>max){
max=scores[i];
}
if(scores[i]<min){
min=scores[i];
}
}
//输出比较结果
System.out.println("最高成绩"+max);
System.out.println("最低成绩"+min);
5.数组的排序
Arrays.sort(数组名)
Scanner sc=new Scanner(System.in);
//定义数组,存储用户输入的成绩
int[] scores=new int[5];
//声明变量,存储最高成绩和最低成绩
int max;
int min;
//通过循环对数组进行赋值
System.out.println("请输入5位同学的成绩");
for(int i=0;i<scores.length;i++){
scores[i]=sc.nextlnt();
}
//对数组元素进行排序
Arrays.sort(scores);
//输出结果
System.out.println("成绩由低到高");
for(int item:scores){
System.out.println(item);
}