目录
1、运算符
1、赋值运算符:=
2、算术运算符:
+ - * / % ++ --
注意:
1、整数相除,舍弃余数
2、浮点数相除,保留余数
3、前置++,先将变量自增1,再参与表达式运算
4、后置++,先取出变量的值参与表达式运算,然后再自增1
3、关系运算符:结果是一个boolean
>
<
>=
<=
==
!=
<>
字符串存储的原理:
1、字符串常量(使用双引号创建的字符串对象)存储在常量池中
2、使用new关键字创建的字符串对象,会分配新的存储空间
3、所以要比较字符串是否相等(字符串的值是否相等),不能使用==来比较
从控制台(键盘)动态录入的字符串对象,跟new一个字符串对象同一个原理
4、字符串的比较要使用其方法:equals()
4、逻辑运算符
& 逻辑与
&& 短路与
| 逻辑或
|| 短路或
! 逻辑非:
知识点:java生成伪随机数的两种方式
1、Math.random():生成的随机数大于等于0,小于1--左闭右开
2、Random.nextInt(num):生成的随机数,大于等于0,小于num--左闭右开
//第一种方式
for(int i = 0; i < 100; i++) {
double random = Math.random();
System.out.println((int)(random * 3)+1);
}
System.out.println("==========");
//第二种方式
Random random = new Random();
//调用其方法,传递种子数,生成的随机数就是大于等于0,小于种子数
for(int i = 0; i < 100; i++) {
int num = random.nextInt(3)+1;
System.out.println(num);
}
2、位运算符
磁盘容量:
1b=1byte 1字节 = 8位 8bit
1024b = 1kb 千字节 = 1mb
1024m = 1g
1024g = 1t
二进制 :bit 比特 0 1
十进制 二进制
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100
5 0000 0101
6 0000 0110
7 0000 0111
8 0000 1000
转换算法:短除法
比如,十进制--129
位运算符:
& 位与
| 位或
^ 异或
<< 左位移
>> 右位移
>>> 无符号位移
二进制:位与运算,相同位都为1结果为1,或者为0
00000110
00000011
&位与-------------
00000010
位或运算,相同位只要有一个1,结果就为1
00000110
00000011
|位或-------------
00000111
异或运算,相同位不同(一个为1,一个为0)结果为1,否则为0
00000110
00000011
^异或-------------
00000101
左位移:十进制 3 的二进制表示
0000 0011
左移1位,最左边丢弃一个0,最右边补一个0
0000 0110 十进制 6, =3x2的一次方
左移2位,最左边丢弃2个0,最右边补2个0
0000 1100 十进制 12, =3x2的两次方
3、程序流程控制结构
程序执行的默认流程:
从上到下,从左到右
分支结构
if分支结构
switch分支结构
循环结构
for循环结构
while循环结构
dowhile循环结构
1、简单if分支结构
语法:
if(条件表达式){
//if语句块
}
2、if-else分支结构
语法:
if(条件表达式){
//语句块1
}else{
//语句块2
}
3、多重的if-else分支结构
4、嵌套的if-else结构
5-switch分支结构
Scanner input = new Scanner(System.in);
System.out.println("请输入小明参加计算机比赛的名次:");
//int position = input.nextInt();
String position = input.next();
/*
* 1、条件表达式的类型:整形及其兼容类型,String(java7及以上),enum(枚举)
* 2、break:用于退出整个switch结构,是否省略要看业务逻辑
* 3、case的顺序能不能打乱?能,但是不建议
*/
switch(position) {
case "1":
System.out.println("奖励:笔记本一台");
break;
case "2":
System.out.println("奖励:ipad一台");
break;
case "3":
System.out.println("奖励:移动硬盘一个");
break;
default:
System.out.println("没有奖励!");
break;
}
/*
* if(position == 1) { System.out.println("奖励:笔记本一台"); }else if(position == 2) {
* System.out.println("奖励:ipad一台"); }else if(position == 3) {
* System.out.println("奖励:移动硬盘一个"); }else { System.out.println("没有奖励!"); }
*/
练习:
使用switch输出:周135写代码,24看电影,67休息
注意:
1、switch一般用于等值比较的分支
2、所有的switch结构都可以转换为if-else结构
3、if-else结构不一定能转换为switch,比如:范围分支
6、for循环结构
语法:
for(循环变量的初始化;循环条件;循环条件的改变){
//循环体
}
执行步骤:
1、执行表达式1:进行循环变量的初始化
2、执行表达式2,进行循环的准入判断
3、执行循环体,打印i-->1
4、执行表达式3,将循环条件改变:i++ -->2
重复:2、3、4的步骤
程序调试(debug):
1步:设置断点
2步:调试执行
3步:观察程序执行的路径及程序变量的改变
4步:解决bug
练习:
使用for循环输出1到100中的偶数
7、两个关键字:
break:
1、用于跳出switch结构
2、用于跳出循环结构
continue:
用于加速循环,遇到continue关键字,程序跳过本轮循环的余下代码,进入下一轮循环
8、while循环结构:
语法:
while(循环条件判断){
//循环体
}
注意:
while循环与for循环的特点:
先判断,再循环
如果条件不满足,则一次循环都不执行
9、dowhile循环:
语法:
do{
//循环体
}while(循环条件);
特点:
先执行,再判断
不管条件是否满足,至少执行一次循环
练习:使用学过的知识,完成石头剪刀布游戏,要求:
1、可以玩多局
2、计算每局的得分,赢的一方加1分
3、统计总局数
4、游戏结束时,打印输出:总局数、双方的得分、最终的输赢
4、嵌套的循环结构
1、需求:使用双重的for循环打印99乘法表
1X1=1
2X1=2 2X2=4
3X1=3 3X2=6 3X3=9
4X1=4 4X2=8 4X3=12 4X4=16
5X1=5 5X2=10 5X3=15 5X4=20 5X5=25
6X1=6 6X2=12 6X3=18 6X4=24 6X5=30 6X6=36
7X1=7 7X2=14 7X3=21 7X4=28 7X5=35 7X6=42 7X7=49
8X1=8 8X2=16 8X3=24 8X4=32 8X5=40 8X6=48 8X7=56 8X8=64
9X1=9 9X2=18 9X3=27 9X4=36 9X5=45 9X6=54 9X7=63 9X8=72 9X9=81
2、需求:控制台录入打印的行数,打印*矩形
请输入打印的矩形的行数:8
********
********
********
********
********
********
********
********
3、需求:控制台录入打印的行数,打印*直角三角形
请输入打印的直角三角形的行数:5
*
***
*****
*******
*********
4、作业
需求:控制台录入打印的行数,打印*菱形
请输入打印的菱形的行数:5
*
***
*****
***
*
5、字符串类
字符串类:
1、认识String类
A、位置:java.lang.String,使用时不需要导包
B、是一个final类,不能被继承,不能有后代
C、常用方法
什么是方法?方法就是一个封装了特定功能代码的一种结构
方法怎么使用?使用对象名.方法名()调用
charAt(int index),返回给定下标的字符
length() 返回字符串的长度
contains(CharSequence cs)判断字符串中是否包含给定的字符序列
startsWith(String str) 判断字符串是否以给定的子串开头
endsWith(String str) 判断字符串是否以给定的子串结尾
replace(char oldChar,char newChar)
indexOf()
lastIndexOf()
split(String regex)
练习:从控制台录入一段文字,反转输出,比如:
12345 ---> 54321
野火烧不尽,春风吹又生 --->
6、Java的注释
java有三种注释:
单行注释 //
多行注释 /* */
文档注释 /** */
7、数组
回顾:
1、java中是如何将程序的数据存储在计算机系统中的?
通过变量
但是,一个变量只能存储一个数据
能不能使用一个变量来存储多个数据?能-->数组
2、什么是数组?
数组就是一种能存储多个相同数据类型数据的变量
3、数组的使用步骤:
A、数组的声明:String []arrNames;
B、分配空间:arrNames = new String[30];
C、给数组赋值:arrNames[0]="尤嘉";
D、使用
4、数组的存储原理:
A、数组的空间是连续的
B、数组的第一个元素空间的下标是0
C、数组的最后一个元素空间的下标是其大小-1
D、数组一旦分配空间后,所有元素都具有默认值--是元素数据类型的默认值
String --> null
int --> 0
double --> 0.0
boolean --> false
5、数组使用的简化步骤
A、数组声明的两种方式:
String []names;
String names[];
B、声明和分配空间合并:
1步:String []names;
2步:names = new String[5];
2步合并:String []names = new String[5];
C、声明、分配空间、赋值合并:
int []nums1 = new int[]{1,3,5,7,9};
int []nums2 = {10,20,30,40,50};
错误的合并示例:
String []names = new String[3];
names = {"tom1","tom2","tom3"};
6、数组的动态初始化
示例:使用数组存储班级学生的姓名和成绩
基于数组完成:欢迎使用迷你dv管理器,功能如图所示:
堆栈