- 一、计算机基础
- 1.计算机组成
- 2.程序
- 3.编程语言
- 二、Java
- 1.Java简介
- 2.发展历史
- 3.JDK的安装和配置
- 4.第一个Java程序
- 三、Java基础
- 1.输出
- 2.代码注释
- 3.变量
- 1).概念
- 2).变量三要素:
- 3).数据类型:
- 4).变量名
- 5).变量的使用:
- 4.常量
- 1).概念
- 2).常量的使用
- 5.运算符
- 1).赋值运算符
- 2).算术运算符
- 3).关系运算符
- 4).逻辑运算符
- 5).位运算符
- 6).优先级
- 7).交换算法
- 四、程序流程结构
- 1.顺序结构
- 2.选择结构
- 1).if结构
- 2).swich选择结构
- 3).if和switch嵌套使用
- 3.循环结构
- 1).while
- 2).do...while
- 3).for
- 4).循环的选择
- 5).break和continue
此文记录自己学习Java基本语法过程中的笔记,用于自己复习。因初次学习,难免有不恰当的地方,仅供各位读者参考。
一、计算机基础 1.计算机组成硬件
输入设备
接受外部的数据,指令
键盘、鼠标、摄像头、扫描仪,麦克风
输出设备
显示、输出内部的数据
显示器、音箱、打印机
存储设备
内存
特点:瞬时存储、易失性、存取速度快
外存
硬盘、U盘、等
特点:永久存储、存储速度慢
存储单位:bit位 b
字节byte B 1B=8b
KB 1KB=1024B
MB 1M=1024KB
GB 1G=1024M
TB
处理器CPU
控制器:分析指令,分配协调其它组件工作
运算器:运算
这些组件是协调进行工作。输入设备–控制器–运算器+存储器–>输出设备
软件
系统软件:Windows,Mac,Linux,Android
图行化的操作系统
DOS:Win+R–》cmd启动
目录切换:cd (change dir)
cd 目录路径名
相对路径:从当前路径开始
绝对路径:从某个盘符的跟路径开始
回到上一级 cd …
跨盘符:盘符名:
注意事项:可以使用Tab进行提示补全
如果路径中含有空格等特殊字符建议路径名加引号
不区分大小写
借助方向上下键使用历史指令
应用软件
QQ、微信
2.程序生活中的程序:为了解决某个问题,进行一系列的有序动作
计算机中的程序:为了让计算机帮我们解决某个问题,而编写的一系列有序指令集
3.编程语言机器语言:01010111100000
特点:可读性不高,维护性;执行效率高
汇编语言:借助一些助记符来编写程序,add 1,1 result
特点:可读性有改善;代码很冗长,要求对计算机的硬件组成非常了解。运行速度也比较快
高级语言:a=1 b=2 c=a+b
C语言是鼻祖,C++,C#,Python,Java等
编译型语言:源代码—经过编译器的编译—可执行文件 翻译家:整体翻译-----Java
解释型语言:源代码—经过解释器的解释—从上到下逐行解释执行 同声传译
二、Java 1.Java简介编译型高级语言、面向对象、跨平台(跨操作系统)、分布式
jvm: java virtual machine java虚拟机
2.发展历史1996年1月,Sun公司发布了Java的第一个开发工具包*(JDK 1.0)*
1998年12月8日,第二代Java平台的企业版J2EE发布。
J2ME(Java2 Micro Edition,Java2平台的微型版):移动端,现在被Android替代
J2SE(Java 2 Standard Edition,Java 2平台的标准版):提供核心功能
J2EE(Java 2Enterprise Edition,Java 2平台的企业版)
2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。
2009年,甲骨文公司宣布收购Sun
2014年,甲骨文公司发布了Java8正式版
3.JDK的安装和配置JDK
java development kit java程序开发包,供开发用
jre
java runtime environment java运行时环境 ,供java程序
未配置环境变量,会提示
C:Usersyy>javac -version
‘javac’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
配置环境变量:就是为了在任何目录下都能使用bin目录下的指令
4.第一个Java程序搜索:编辑环境变量配置,在系统变量中
新增:JAVA_HOME:C:Program FilesJavajdk1.8.0_333
添加Path: %JAVA_HOME%bin
CLASSPATH:可以暂不配
1)写源程序(后缀名java)
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!!!");
System.out.println("Hello World!!!");
}
}
2)编译(后缀名是class)
javac 文件名.java
编译成了文件名.class
3)运行
java 文件名
注意点:
三、Java基础 1.输出1、文件名要与public修饰的class 名一致
2、要用英文命名,每个单词首字母大写,驼峰法,见名知意
3、乱码是编码格式导致的
4、main方法是java程序的入口,有四要素public,static,void,String[]
5、java中开始的大括号一般在行末,结束的大括号跟这个层级对齐
6、每个指令以分号结束
在控制台输出一定的内容,然后换行
System.out.println("hello world");
在控制台输出一定的内容,不换行
System.out.print("hello world");
输出一个空行
System.out.println();
练习
太棒了!
马上就端午了!
回家!
转义字符
| 转义字符 | 描述 | 举例 |
|---|---|---|
| " | " | System.out.println(“”"); |
| \ | System.out.println(“\”); | |
| t | 一个Tab键的距离 | System.out.println(“你好t张三”); |
| n | 换行 | System.out.println(“你好n张三”); |
练习:打印购物清单
2.代码注释作用:解释代码,是给程序员看的,方便维护
编译器不处理注释,所以不影响程序的执行效率
提倡代码注释多多益善
分类:
1、单行注释。//
2、多行注释。
3、文档注释。
3.变量 1).概念我有10块钱,吃早饭花6元,还剩多钱?
1、开空间,存储数据
2、CPU运算,更新空间的值
变量:内存中的一块空间
这块空间中存储的值是可以发生的变化的
2).变量三要素: 变量值:空间存储的数据;
变量类型:存储数据的类型,来决定分配多大的空间
变量名:存储空间的别名,快速地找到取出其中的数据
3).数据类型: 基本数据类型:
数值:整数
int 4个字节 32位 [-231-231-1]===[-2,147,483,648,2,147,483,647]
byte 1个字节
short 2个字节
long 8个字节
小数/浮点数
float 4个字节
double 8个字节
字符型
char 存储单个字符 使用单引号引起来 如 ‘男’ ‘1’ 2个字节
‘0’----48 ‘A’----65 ‘a’-----97
布尔型
boolean 真true 假 false
引用数据类型:
字符串
String 存储0-N个字符 使用双引号引起来 如“helloworld”
怎么确定数据类型:
手机号码?字符串;
身份证号号码?字符串;
订单号?字符串
银行存款¥1,234,456元?double
不需要计算,可以存储为字符串。
4).变量名 命名规范:
1)只能使用$,字母,数字,_,不能以数字开头
2)不能使用关键字。public class static void String
3) 要见名知意 age name score
4)使用驼峰法(Camel命名法),第一个单词首字母小写,其后每个单词首字母大写:stuJavaScore
5)区分大小写 age Age是两个不同的变量
5).变量的使用:1、申请空间(声明):数据类型 变量名;
int money;
double score;
2、存储数据(赋值)
money = 10;
可以合成一步:数据类型 变量名=值;
String name=“王明”;
boolean flag=true;
3、使用变量
System.out.println(name);
注意:变量必须先声明,后赋值,再使用。
练习:
输出MP3的数据:
品牌:漫步者
价格:299.9
颜色:白
库存:100
是否首发:false
4.常量 1).概念输出某个学生的信息
姓名:王丽
性别:女
身高:165.8
年龄:18
常住地是否是西安?true
常量:内存中的一块空间,空间中存储的数据不能改变
2).常量的使用 语法:final 数据类型 变量名=值;
命名规则:全部用大写,单词之间用_做分隔,如USER_ROLE_VIP
字面常量:1,234,‘a’,“abc”,false
默认的数据类型:整数默认的数据类型是int,如果给long类型赋值,需要添加l/L,建议大写L;
小数默认的数据类型是double,如果给float类型赋值,需要添加f/F;
使用场景:1、固定不变的量建议使用常量,PI,WEEK_DAY
2、特殊的含义,STATE_ON,STATE_OFF
5.运算符 1).赋值运算符语法:变量名=表达式;
运算规则:从右往左
int a=12;
int b=a;
int c=a+1;
从键盘输入数据
2).算术运算符//导包
import java.util.Scanner;
//初始化scanner
Scanner scanner=new Scanner(System.in);
//接收一个整数
int a=scanner.nextInt();
//接收一个double类型的数据
scanner.nextDouble();
//接收一个字符串
String str=scanner.next();
+ - * / %
//整除,整数/整数,结果一定是整数
int a=3/2 //结果是1
//求余 %
int b=13%2;
拆分一个三位数
int num2=986; // 98 6/// 9 86 int bai2=num2/100; int ge2=num2%10; //int shi2=num2/10%10; int shi2=num2%100/10; System.out.println(num2+"的百位数字是:"+bai2); System.out.println(num2+"的十位数字是:"+shi2); System.out.println(num2+"的个位数字是:"+ge2);
单目运算符:自增自减运算符++,–
++
int a=1;
a++; //a=a+1
++在后,先用再+
++在前,先+再用
int a=1;
//a=a+2;
a+=2;
System.out.println(a);
System.out.println("-------");
int b=12;
//b++;
//++b; //b=b+1;
//b--;
--b;
System.out.println(b);
System.out.println("-------");
int c=5;
// ++在后,先用再+
//--在后,先用再-
//System.out.println(c++);
int d=c++;
System.out.println(c);
System.out.println(d);
System.out.println("-------");
//++在前,先+再用
//--在前,先-再用
int x=15;
//System.out.println(++x);
int y=++x;
System.out.println(x);
System.out.println(y);
3).关系运算符
> < >= <= == !=
关系表达式的结果是boolean
== 等于
注意:关系表达式不要连写 1
int num1=23; int num2=23; boolean flag=num1double类型在底层是不精确存储,不建议进行==比较
double d1=1.0; double d2=1.0000000000000000000123; System.out.println(d1==d2);字符串之间的等值比较不能用==,而要用.equals()
String str1="abc"; String str2="abc"; System.out.println(str1==str2); Scanner sc=new Scanner(System.in); String str3=sc.next(); System.out.println(str1==str3); //比较字符串的地址是否一致 boolean f=str1.equals(str3); //比较字符串的值是否一致 System.out.println(f);char类型在底层是数值存储,也可以进行大小比较
char c='a'; char d='b'; System.out.println(c==97); System.out.println(c练习
4).逻辑运算符从键盘上输入一个数,输出是否是偶数?
链接多个条件/关系表达式
&& 逻辑与 两个条件同时成立,整个表达式才成立 :同真则真,有假则假
|| 逻辑或 两个条件只要有一个成立,则整个表达式成立 :有真则真,同假则假
支持短路,即第一个表达式的结果就可判断整个表达式的结果,则第二个表达式就无需判断
!取反
int num1=15; int num2 =1; boolean f=(num1<10)&&(num2>2); System.out.println(f); boolean f2=(num1<10)||(num2>2); System.out.println(f2); //&& || 支持短路 boolean f3=(num1<10)||(num2++<3); System.out.println(f3); System.out.println(num2); //取反 boolean f4=!f3; System.out.println(f4);练习
5).位运算符输入一个数,判断是否是个四位整数
<< 左移:相当于乘法,乘以2的N次方
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZVwyfHrh-1654775053762)(D:AF2205typora_imgimage-20220602121405988.png)]
int a=5; int b=5<<1; System.out.println(b); //结果是10>>右移:相当于整除,除以2的N次方
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6yVHmBl7-1654775053768)(D:AF2205typora_imgimage-20220602121815120.png)]
int c=5>>1; System.out.println(c);& 按位与 :同1则1,遇0则0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJrbuFDJ-1654775053769)(D:AF2205typora_imgimage-20220602121608471.png)]
int m = 5; int n=13; System.out.println(m&n); 逻辑运算 (3>7)&(2<8) 不支持短路
int m = 5; int n=13; System.out.println((m>6)&(n++>4)); System.out.println(n); //n=14 判断奇偶数:
int x=20; boolean f=(x&1)==0; System.out.println("是偶数吗?"+f);|按位或:有1则1,同0则0[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9hv7sCJ-1654775053770)(D:AF2205typora_imgimage-20220602122037618.png)]
int num1=5; int num2=13; System.out.println(num1|num2); //13 逻辑运算,不支持短路(略)
取一个数最近的偶数:或1,最低位置1,然后-1,最低位就变成了0
int num3=25; int num4=(num3|1)-1; System.out.println((num4&1)==0);^ 按位异或 :不同为1,相同为0
对同一个数字异或两次,可以获取原数字
可用于加密和解密
int num5=5; int num6=13; System.out.println(num5^num6); //8 System.out.println(num5^num6^num6); //56).优先级先运算,再比较,然后连接,最后赋值
小括号的优先级最高,建议添加小括号增强代码的可读性。
(2*(1+1)+23)*2
7).交换算法int a=5;int b=8;实现a,b两个数的交换
方法一:申请临时变量
temp=a;
a=b;
b=temp;
方式二:加减法
a=a+b;
b=a-b;
a=a-b;
方式三:异或法
四、程序流程结构 1.顺序结构a=a^b;
b=a^b;
a=a^b;
从上往下依次执行
Scanner sc=new Scanner(System.in); System.out.println("请输入您的用户名:"); String name=sc.next();2.选择结构使用场景:需要先判断条件,再决定如何执行。
1).if结构简单if:
语法:
if(条件表达式){
执行语句;
}
条件表达式:结果是boolean,可以是变量,关系表达式,逻辑表达式等
执行流程:先判断条件表达式的值,如果为true,执行语句;否则继续执行结构后的其它语句
使用场景:只有一个分支
案例:
int a=24; int b=52; //如果a>b;输出a>b,否则什么都不输出 if(a>b){ System.out.println("a>b"); } 练习:有两个数,输出较大的那个数
System.out.println("----------输出两个数中较大的那个-----"); int m=120; int n=25; if(m>=n){ System.out.println("较大的数是"+m); } if(mSystem.out.println("较大的数是"+n); } if…else:
语法:
if(条件表达式){
执行语句1;
}else{
执行语句2;
}
执行流程:先判断条件表达式的值,如果为true,执行语句1;否则就执行语句2。
使用场景:两路分支。
案例:
System.out.println("----------输出两个数中较大的那个-----"); int m=120; int n=25; if(m>=n){ System.out.println("较大的数是"+m); }else{ System.out.println("较大的数是"+n); } 练习1:键盘中输入密码(正确的密码是123),输出密码正确或密码错误。
练习2: 从键盘上输入一个数,判断奇偶性。
多重if结构
语法:
if(条件1){
语句1;
}else if(条件2){
语句2;
}else if(条件3){
语句3
}…
else{
语句4;
}
执行流程:先判断条件1,如果为true,则执行语句1;
否则就判断条件2,如果为true,则执行语句2;
否则就判断条件3,如果为true,则执行语句3;
否则就执行语句4.
使用场景:一个维度连续区间的多路分支。
案例:
//猜数 //> < = int num=18; Scanner sc=new Scanner(System.in); int n=sc.nextInt(); if(n>num){ //> System.out.println("猜大了"); }else if(nSystem.out.println("猜小了"); }else{ //== System.out.println("猜对了"); } //根据成绩评等级 //0-60 差 60-80中 80-90良 90-100 优 int score=58; if(score<60){ System.out.println("差"); }else if(score<80){ System.out.println("中"); }else if(score<90){ System.out.println("良"); }else{ System.out.println("优"); } 练习:根据积分输出可以享受的折扣。[0-2000] 9折 (2000,4000]8折,(4000,6000]7折,(6000,)5折
嵌套if结构
语法:
if(条件1){
if(条件2){
语句1;
}else{
语句2;
}
}else{
语句3;
}
执行流程:先判断条件1,如果条件1不成立,则执行else;
如果成立,就判断条件2是否成立,如果成立,语句1;否则就执行语句2。
使用场景:多个维度的多路分支。
案例:
// 100比赛,时间少于10s就可以进入决赛,否则淘汰 //如果性别是男,就进入男子决赛;否则就进入女子决赛 int time=12; char sex='女'; if(time<10){ if(sex=='男'){ System.out.println("恭喜进入男子决赛"); }else{ System.out.println("恭喜进入女子决赛"); } }else{ System.out.println("谢谢参与"); } 练习:超市活动,会员消费满200元打7折,不满打9折;非会员消费满300打8折,否则不打折。
键盘输入是否是会员,及消费金额来判断享受折扣。
三目运算符:变量 a = 表达式?值1:值2;
//输出两个数中较大的数 int a=120; int b=25; int result=a>b?a:b; String result=a>b?"a大":"b大"; if(a>b) { result=a; }else { result=b; } System.out.println("结果是"+result);2).swich选择结构第一名----冠军T恤 第二名 -----书包 第三名-----气球 其它-----什么都不奖励
语法:
switch(表达式) { case 常量1: break; case 常量2: break; case 常量3: break; default: break; }执行流程:先计算表达式的值,再与case后面的常量进行比较,如果相等,则执行冒号后面到break之
间的代码。
如果和任何一个case都不匹配,则执行default的代码
使用场景:等值的多分支结构备注:
1、表达式 结果的类型只能:byte,short,char,int,String(jdk1.7+),枚举
2、case 常量
常量的数据类型要与表达式的数据类型一致
常量不能重复
常量没有先后顺序
3、break 中断指令,跳出switch结构
4、default 表达式和所有的case都匹配不上,就执行其后的语句。和case语句没有先后顺序int mingCi=1; switch(mingCi) { case 1: System.out.println("冠军T恤 "); break; case 2: System.out.println("书包 "); break; case 3: System.out.println("气球 "); break; default: System.out.println("什么都不奖励"); break; }练习1:
===欢迎登陆学习平台=
1)登录
2)注册
3)退出
=========================
请选择:1
登录练习2:翻译对应的英文缩写。CN—中国,UK—英国 USA—美国,其它----我也不认识
case穿透:case后面的break省略,则不会和下一个case匹配,直接执行其后的代码,直到碰到
break,这叫做case穿透。有时候我们可以利用case穿透简化代码的编写。//晚自习 周一,周三,A老师辅导 周二,周四,B老师辅导,周五,考试,周六周日休息 String today="周二"; switch(today) { case "周一": case "周三": System.out.println("欧老师辅导"); break; case "周二": case "周四": System.out.println("张老师辅导"); break; case "周五": System.out.println("考试"); break; case "周六": case "周日": System.out.println("休息"); break; }练习:1、一三五做面 ,二四六做米饭,周日吃大餐。
3).if和switch嵌套使用
2、根据月份输出该月对应的天数。//输出成绩的优良中差 Scanner sc=new Scanner(System.in); System.out.println("请输入你的成绩:[0,100]"); int a=sc.nextInt(); if(a<0||a>10) { System.out.println("输入有误"); }else { switch(a/10) { case 0: case 1: case 2: case 3: case 4: case 5: System.out.println("差"); break; case 6: case 7: System.out.println("中"); break; case 8: System.out.println("良"); break; case 9: case 10: System.out.println("优"); break; default: System.out.println("输入有误"); break; } }3.循环结构场景:重复做的事情
1).while
循环的特点:
循环操作:重复的事情,可以一样的,也可以是有规律的
循环条件:循环继续的条件,循环结束的条件语法:
while(循环条件){
循环操作;
}
执行流程:先判断循环条件,条件如果成立,就执行循环操作;循环操作执行完成,继续判断条件;
条件如果成立,就执行循环操作;。。。直到条件不成立,循环结束。
特点:先判断,再执行
如果条件不成立,循环操作可能一次都不执行
案例://输出********** //循环操作:输出* sout(*) //循环条件: 循环变量i i=[1-10] 循环变量需要更新 int i=1;//循环变量的初始化 while(i<=10) { System.out.print("*"); i++; }练习:输出10遍 好好学习,天天向上
while循环适用在循环操作可能一次都不执行的场景System.out.println("1登录 2 注册 3退出"); System.out.println("请选择"); Scanner input=new Scanner(System.in); int num=input.nextInt(); // while(num!=1&&num!=2&&num!=3) { System.out.println("输入错误,请重新输入"); num=input.nextInt(); } switch(num) { case 1: System.out.println("登录"); break; case 2: System.out.println("注册"); break; case 3: System.out.println("推出"); break; }使用while,注意判断条件。另可以使用boolean类型作条件判断
Scanner input=new Scanner(System.in); int num=1; boolean flag=true;//true要循环 false退出 // while(num!=3) { while(flag) { System.out.println("1登录 2 注册 3退出"); System.out.println("请选择"); num=input.nextInt(); switch(num) { case 1: System.out.println("登录"); break; case 2: System.out.println("注册"); break; case 3: flag=false; System.out.println("退出"); break; } System.out.println(); }循环操作中可以借助循环变量
//输出1-100之间的偶数 int i=2; while(i<=100) { System.out.println(i); i+=2; } //输出100-1 int j=100; while(j>0){ System.out.println(i); j--; }练习:1、求1-100之间的整数和
2).do…while
2、求1-10之间的乘积
3、求1-2+3-4+5-6+…-100语法:
do{
循环操作;
}while(条件);
执行:先执行一遍循环操作,然后判断条件,条件成立,就继续执行操作;
循环操作执行结束,继续判断条件;。。。。。直到循环条件不成立,循环结束。
特点:先执行,后判断
循环操作至少会执行一次Scanner input=new Scanner(System.in); String answer; do { System.out.println("1登录 2注册 "); System.out.println("请选择"); int num=input.nextInt(); switch(num) { case 1: System.out.println("登录"); break; case 2: System.out.println("注册"); break; } System.out.println(); System.out.println("继续吗"); answer=input.next(); }while("y".equals(answer));练习:
老师讲,我学习
老师问:会了吗?
学生回答:y,结束;n 继续练习2:1-20之间整数相加,求加到几和开始超过50?
3).for语法:for(1、循环变量的初始化;2、循环条件;4、循环变量的更新){
3、循环操作
}
特点:循环次数固定//输出1-100的整数 for(int i=1;i<=100;i+=2) { System.out.println(i); } //输入5个学生的成绩,求平均成绩 Scanner sc=new Scanner(System.in); int sum=0; int count=0;//计数器 for(int i=1;i<=5;i++) { System.out.println("请输入第"+i+"个学生的成绩:"); int score=sc.nextInt(); sum+=score; if(score<90) { continue; } count++; } double avg=sum/5.0; System.out.println("平均成绩:"+avg); System.out.println("90分以上的人数为:"+count); System.out.println("90分以上的人数比例为:"+count/5.0*100+"%");练习:1、输出1-100之间7的倍数
4).循环的选择
2、输入5个学生的年龄,输出20岁以上的人数1)循环次数固定,优先for
5).break和continue
2)循环操作有可能一次都不执行,选用while
3) 其它,while和do…while都可以break 中断指令,结束所在层的循环
//跑10圈 //跑到第7圈,退出 for(int i=1;i<=10;i++) { if(i==7) { System.out.println("实在跑不动了,退出"); break; } System.out.println("跑第"+i+"圈"); }常见编码风格:
while(true){ if(条件) { break; } }continue:中断指令 中断本轮的循环,继续执行下一轮的循环
//跑10圈 //跑到第7圈,跑不动了,休息一圈,接着跑 for(int i=1;i<=10;i++) { if(i==7) { continue; } System.out.println("跑第"+i+"圈"); }注意事项:
1)可以使用在任一种循环结构中。
2)一般都会和条件结构结合使用。
3)避免出现不可到达的代码。
练习:模拟QQ登陆,最多3次机会账号:270828163
密码:te123
输入错误,您还有2次机会
账号:270828163
密码:te123
输入错误,您还有1次机会
账号:270828163
密码:te123
输入错误
3次机会全用完,请稍后再试



