周学习总结
Day01重点
1)基本dos命令:创建文件/文件夹/删除文件/文件夹/清屏
常用DOS命令
命令 | 操作符号 |
---|---|
盘符切换命令 | 盘符名: |
查看当前文件夹 | dir |
进入文件夹命令 | cd 文件夹名 |
退出文件夹命令 | cd … |
退出到磁盘根目录 | cd\ |
清屏 | cls |
2)path环境变量的执行流程
需要现在当前目录找,如果存在,就编译和运行;不存在,然后在path变量中(
jdk安装目录的bin去找)
3)Java中的关键字:
关键字:是Java语言中被赋予特殊含义得单词,字母全部小写。
例如:class,public,static, void,...
4)标识符:给类,变量等起名字的字符序列(见名知意)
要符合标识符的组成规则(起名字也要符合规则)
1)英文大小字母
2)数字字符
3)$和下划线组成_
注意事项:
1)不能以数字开头
2)不能是Java中的关键字
3)严格区分大小
给类和接口的命名是一样的
如果类的组成是一个单词:首字母大写
class Hello{}
//定义一个学生类
class Student{}
clss S{} 不推荐这样写类
如果类的组成式多个单词:每个单词首字母都大写(大驼峰命名法)
class StudentTest{} 针对学生的类测试类
给变量(方法)命名是一样的,
如果变量(方法)是一个单词的话:
该单词全部小写:
check() ,方法名
如果变量或者方法是多个单词的话:
第一个单词全部小写,从第二个单词开始首字母大写(小驼峰命名法)
定义方法名:检查用户名
checkUserName()
给常量的命名
如果是单个单词:
每个字母都大写
TYPE
如果是多个单词
每个单词字母大写,中间下划线隔开
TYPE_TEXT
一般情况:编写代码,要遵循基本规则(开始编码的时候,养成良好习惯!)
5)常量的分类
常量:在程序的执行过程中,其值不发生改变的量!
分类:
1)字面值常量
a)字符串常量:使用双引号括起来的内容
举例: "我爱高圆圆","helloworld..."
b)字符常量:使用单引号括起来的单个内容
举例:'A','a','0'
'AB':写法有问题
c)整数常量: (整数:默认十进制(进制相关的))
100,1000
d)小数常量:
3.14,12.56
e)布尔常量:
true,false
f)空常量:
null
2)自定义常量(跟final关键字有关系:面向对象部分讲)
public static final(终态的,无法更改的,属于状态修饰符) int xxx = xx ;
*** 针对引用类型的变量:变量值:默认 null
Java研究的就是引用类型:数据传递问题!
进制的组成规则:
二进制:由0,1组成,以0b开头(只是来表示是一个二进制数据) 0b100
八进制的组成:由0,1,2,..7组成,以0开头: 0100
十进制:整数 默认值(100)
十六进制的组成:由0,1,..9,a,b,c,d,e,f组成,以0x开头
变量:
变量:程序执行过程中,值发生改变的量!
三要素:
1)数据类型
2)变量名
3)初始化值
数据类型 变量名 = 初始化值;
针对Java语言数据类型的划分:
两大类:
基本数据类型
四类八种
整数类型
byte: 字节类型 占1个字节 记住byte类型的范围:-128~127(考点)
short:短整型 占2个字节
int(整数默认的类型):整数类型 占4个字节
long:长整型 占8个字节
应用场景:定义时间(系统时间换算成时间毫秒值)相关的变量(都是用long)
浮点类型:(小数默认的就是double类型)
单精度:float类型 占4个字节
双精度:double类型 占8个字节
字符类型:
char类型 占2个字节
布尔类型 占1个字节
boolean类型(true/false)
应用场景:用在逻辑判断中,布尔类型一般不参与运算!
引用数据类型(研究的这个类型) :面向对象部分讲解
数组,类(具体类,抽象类),接口
注意事项:
1)注意:如果定义long类型:在值的末尾加上一个标记(L/l,建议大L)
变量在进行运算的时候,需要保证这些数据的类型一致!
Java存在默认类型提升(基本数据类型):
byte,short,char三者不会相互转换,一旦这三个中间的某个类型参与运算了,它会提升
int类型(考点)---long类型--double类型
注意:
boolean类型的变量不会进行数据类型的相互转换(true/false)
Java中存在强制类型转换:
语法格式:
目标数据类型 变量名 = (目标数据类型)(变量值)
注意事项:
强制类型不要随便使用,损失数据的精度!
适用范围:基本数据类型以及引用类型!
130对应二进制数据是多少:0b10000010
整数默认int:4个字节
- - ```
130整数的:原码
最高符号位:0 原码,反码,补码都一样
00000000 00000000 00000000 10000010
补码: 计算机底层计算需要用补码进行计算:byte b = (byte)130;
00000000 00000000 00000000 10000010
截取三个字节---->变成一个字节:byte类型
计算后的结果: 10000010 (补码)
最高符号位 数值位
1 0000010 补码
## -1
1 0000001 反码
负数的反码--->原码:最高符号不变,数值位按位取反,0变1,1变0
1 1111110 原码
结果:
- 64+32+16+8+4+2
- 126
```
字符串拼接:
+:
表示一个数据是正数,同时也能表示一个字符串拼接符号,也能做加法运算
字符串拼接符号使用居多
字符串数据+(拼接符号) 任何数据= 新的字符串
Day 03
1.位运算符:
位运算符中相关的移动符号:
<<:左移,将最高符号位舍弃掉,在右边补齐0
>>:右移符号: 如果最高符合为如果是0,在左边补齐0;最高符号位如果是1,左边补齐1
>>>:无符号右移:无论最高符号为是0还是1,始终在左边补齐0
//请用最有效的方式写出2乘以8 的结果
2 << 3 2 * 2^3
3.键盘录入
以int类型为例:
1)导包 在Java中只要不是java.lang包下的类都需要导包
位置在class上面, 格式import java.util.Scanner; (用哪个类导哪个类)
2)固定格式:创建一个文件扫描器对象
Scanner 对象名 = new Scanner(System.in) ;
3)友情提示:"请您输入一个整数数据:"
4)接收数据:
int 变量名= 对象名.nextInt() ;
5)输出变量名即可!
键盘录入字符串方法有三种:
1.早期的 main方法中的参数: String[] args 弊端:只能接收字符串数据
2.JDK5以后 Scanner类:键盘录入
3.IO流中: BufferedReader(字符缓冲流流) readLine()
使用Scanner类里面的功能:public String nextLine() :可以录入一个字符串数据
/*
现在使用switch实现:键盘录入月份的值,判断季节
3,4,5 春季
6,7,8 夏季
9,10,11 秋季
12,1,2 冬季
*/
//导包
import java.util.Scanner;
class SwitchTest{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并接收
System.out.println("请您输入一个数据:") ;
int month = sc.nextInt() ;
switch(month){
//直接利用case穿透
case 3:
case 4:
case 5:
System.out.println("春季") ;
break ;
case 6:
case 7:
case 8:
System.out.println("夏季") ;
break ;
case 9:
case 10:
case 11:
System.out.println("秋季") ;
break ;
case 12:
case 1:
case 2:
System.out.println("冬季") ;
break ;
default:
System.out.println("您输入的数据不合法,不存在该月份!") ;
break ;
}
}
}
4.流程控制语句
流程控制语句分为三类:
顺序结构 程序自上向下执行
选择结构 if if else
/*
用if语句比较三个数中的最大值
*/
class Demo{
public static void main(String[] args){
int x ;
int y ;
int z ;
int max ;
if ( x > y )
{
if ( x > z )
{
max = x;
}else
{
max = z;
}
}else
{
if ( y > z )
{
max = y ;
}else{
max = z ;
}
}
}
}
循环结构 for while do-while
/*
需求:统计所有的水仙花数有多少个?
分析:
统计思想:
1)定义一个统计变量: 默认值从0开始 count
2)获取水仙花数据
三位数,告诉我们一个范围100-999
3)确定每个位上的数据
int ge = 该数据本身 %10 ;
int shi = 该数据本身 /10 %10;
int bai = 该数据本身/10 /10 %10 ;
4)满足条件:该数据==ge*ge*ge+shi*shi*shi+bai*bai*bai
统计变量++
5)输出统计变量
*/
class ForDemo4{
public static void main(String[] args){
//定义一个统计变量,默认值是0
int count = 0 ;
//获取水仙花数
for(int x = 100 ; x < 1000 ;x ++){
//每个位上的数据
int ge = x % 10 ;
int shi = x /10 % 10 ;
int bai = x /10 /10 % 10;
//满足条件
if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai )){
//统计变量++
count ++ ;
//显示一下数据
System.out.println(x) ;
}
}
//输出统计变量
System.out.println("水仙花数共有"+count+"个") ;
}
}
5.while循环和for循环的区别?
1)两种循环格式不一样
while循环---->
从内存角度考虑,while循环结束了,依然可以访问循环中的变量(消耗内存空间)
for循环----->
从内存角度考虑,for循环结束了,不能访问变量(变量生命周期随着for循环的结束而结束),比较省内存空间
2)从应用场景来说:
一般情况:如果明确循环次数或者明确循环的范围,优先考虑使用for循环
举例:给3次机会,模拟用户登录.. 可以使用for循环
如果不明确循环次数或者不明确的范围,使用while循环操作
举例:
猜数字游戏,(产生的随机和用户录入的数据进行比较)
---->这种情况:使用while循环操作
第一周学习心得体会:
对于自己本周的学习能打个及格分吧,之所以不是高分是因为一些细小的知识点比较模糊,看的时候觉得什么都会,但是等自己独立上手敲代码时候会发现自己还有很多的不足,很多小细节都会出错,所以建议大家也是建议自己还是需要多加练习,比如主函数main不要拼写错误,语句结束;不能忘记。细节决定成败!