学习记录不是按照每日学习记录,是按照课程的相关安排进行的。笔记只是为了方便日后返回头查看遗忘的知识点,并观看对应的相关视频。


导航

  • Day01
    • 1.基础及环境
      • 1.1 常用的DOS命令级快捷键
      • 1.2 开发环境搭建及path环境变量配置
    • 2.总结及作业
      • 2.1 第一个Java程序HelloWorld总结
      • 2.2 今日作业
    • 3.其他补充
    • 4.感想
  • Day02
    • 1.关键字与保留字
    • 2.标识符的使用
    • 3.变量(重点)
      • 3.1 变量的使用
      • 3.2 Java定义的数据类型
      • 3.3 基本数据类型之间的运算规则
      • 3.4 String类型变量的使用
  • Day03
    • 1.运算符
      • 1.1 算术运算符
      • 1.2 赋值运算符
      • 1.3 比较运算符
      • 1.4 逻辑运算符
      • 1.5 位运算符 (了解)
      • 1.5 三元运算符
    • 2.分支结构中的if-else(条件判断结构)
  • Day04
    • 1.If - else(补充)
    • 2.分支结构中的 switch-case
    • 3.For循环结构
    • 4.感想
    • 5.补充点
  • Day05
    • 1.While 循环的使用
    • 2.do-while循环的使用
    • 3.探究质数求法(要回顾)
    • 4.break和continue关键字的使用

Day01

1.基础及环境

1.1 常用的DOS命令级快捷键

  • dir:列出文件及文件夹
  • md:创建目录
  • rd:删除目录
  • cd:进入目录
  • cd…:退回上级目录
  • cd:退回根目录
  • del:删除文件
  • exit:退出dos命令行
    补充:echo javase>1.doc
  • ←→:移动光标
  • ↑↓:调阅历史命令
  • Delete和Backspace:删除字符

1.2 开发环境搭建及path环境变量配置

  • JDK=JRE+开发工具集(例如Javac编译工具等)
  • JRE=JVM+Java SE标准类库

下载: 到oracle官网,一路下一步.

path环境变量配置:
JAVA_HOME= jdk地址
path设置:%JAVA_HOME%\bin;
扩展:set path=%path% 配置临时环境

2.总结及作业

2.1 第一个Java程序HelloWorld总结

/*
对第一个java程序进行总结
1.Java程序编写-编译-运行的过程
编写:我们将编写的Java代码保存在以“.java”结尾的源码文件中
编译:使用javac.exe命令编译我们的java源文件。格式:javac 源文件名.java
运行:使用java.exe命令解释运行我们的字节码文件。格式:java 类名2.在一个java原文件中可以声明多个class。但是,只能最多有一个类声明为public的。
而且要求声明为public的类的名必须与源文件名相同。3.程序的入口是main()方法。格式是固定的。4.输出语句:
System.out.println():先输出数据,然后换行
System.out.print():只输出数据5.每一行执行语句都以“;”结束6.编译的过程:编译以后,会生存一个或多个字节码文件,字节码文件的文件名与java源文件中的类名相同。*/
public class Hello
{public static void main(String[] args) //arguments:参数{System.out.println("Hello World!");}
}class Person
{}class Animal
{}

2.2 今日作业

1.JDK,JRE,JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些?

JDK = JRE + Java的开发工具(javac.exe,java.exe,javadoc.exe)
JRD = JVM + Java核心类库

2.为什么要配置path环境变量?如何配置?

JAVA_HOME = bin的上一层目录
path = %JAVA_HOME%\bin

3.常用的几个命令行操作都有哪些?(至少4个)

cd
md
rd
del
cd…
cd/

4.创建如下的类,使得运行的话可以输出:

创建java文件:ChairMan.java

 public class ChairMan{public static void main(String[] args){System.out.println("姓名:Kay\n");////System.out.println();System.out.println("性别:男");System.out.println("家庭住址:北京中南海");}}

5.编译和运行上述代码的指令

编译:javac ChairMan.java
运行:java ChairMan

3.其他补充

Editplus工具添加:

Javac:

  • 参数:$(Filename)
  • 起始目录:$(FileDir)

Java:

  • 参数:$(FileNameNoExt)
  • 起始目录:$(FileDir)

4.感想

希望能一直坚持下去,努力学习~第一天结束!

Day02

1.关键字与保留字



**保留字:**goto、const

2.标识符的使用

1.标识符:凡是自己可以起名字的地方都叫标识符。
比如:类名、变量名、方法名、接口名、包名…

2.标识符的命名规则:–> 如果不遵守如下的规则,编译不通过!需要大家严格遵守

由26个英文字母大小写,0-9 ,_或 $ 组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。

  1. Java中的名称命名规范: —>如果不遵守如下的规范,编译可以通过!建议大家遵守

包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

3.变量(重点)

3.1 变量的使用

  1. java定义变量的格式:数据类型 变量名 = 变量值;

  2. 说明:
    ① 变量必须先声明,后使用
    ② 变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域,就失效了
    ③ 同一个作用域内,不可以声明两个同名的变量

3.2 Java定义的数据类型

一、变量按照数据类型来分:

基本数据类型:
整型:byte \ short \ int \ long
浮点型:float \ double
字符型:char
布尔型:boolean

引用数据类型:
类(class)
接口(interface)
数组(array)

二、变量在类中声明的位置:
成员变量 vs 局部变量

3.3 基本数据类型之间的运算规则

**前提:**这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。

1. 自动类型提升:

结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte 、char 、short --> int --> long --> float --> double

特别的:当byte、char、short三种类型的变量做运算时,结果为int型

2. 强制类型转换
自动类型提升运算的逆运算。
1.需要使用强转符:()
2.注意点:强制类型转换,可能导致精度损失。

此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量

3.4 String类型变量的使用

  1. String属于引用数据类型,翻译为:字符串
  2. 声明String类型变量时,使用一对""
  3. String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
  4. 运算的结果仍然是String类型

Day03

1.运算符

1.1 算术运算符

+ - + - * / % (前)++ (后)++ (前)-- (后)-- +

%: 取余运算
结果的符号与被模数的符号相同
开发中,经常使用%来判断能否被除尽的情况。

(前)++: 先自增1,后运算
(后)++: 先运算,后自增1
注意点:
s1 = s1 + 1;//编译失败
s1 = (short)(s1 + 1);//正确的
s1++;//自增1不会改变本身变量的数据类型

(前)-- : 先自减1,后运算
(后)-- : 先运算,后自减1

1.2 赋值运算符

**= += -= *= /= %= **

注意点:
s1 = s1 + 2;//编译失败
s1 += 2;//结论:不会改变变量本身的数据类型

开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num = 10;)
方式一:num = num + 2;
方式二:num += 2; (推荐)

开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;)
方式一:num = num + 1;
方式二:num += 1;
方式三:num++; (推荐)

1.3 比较运算符

== != > < >= <= instanceof

结论:
1.比较运算符的结果是boolean类型
2.区分 == 和 =

class CompareTest {public static void main(String[] args) {int i = 10;int j = 20;System.out.println(i == j);//falseSystem.out.println(i = j);//20boolean b1 = true;boolean b2 = false;System.out.println(b2 == b1);//falseSystem.out.println(b2 = b1);//true}
}

1.4 逻辑运算符

& && | || ! ^

说明:
逻辑运算符操作的都是boolean类型的变量

class LogicTest {public static void main(String[] args) {//区分& 与 &&//相同点1:& 与  && 的运算结果相同//相同点2:当符号左边是true时,二者都会执行符号右边的运算//不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。//开发中,推荐使用&&boolean b1 = true;b1 = false;int num1 = 10;if(b1 & (num1++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num1 = " + num1);boolean b2 = true;b2 = false;int num2 = 10;if(b2 && (num2++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num2 = " + num2);// 区分:| 与 || //相同点1:| 与  || 的运算结果相同//相同点2:当符号左边是false时,二者都会执行符号右边的运算//不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算//开发中,推荐使用||boolean b3 = false;b3 = true;int num3 = 10;if(b3 | (num3++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num3 = " + num3);boolean b4 = false;b4 = true;int num4 = 10;if(b4 || (num4++ > 0)){System.out.println("我现在在北京");}else{System.out.println("我现在在南京");}System.out.println("num4 = " + num4);}
}

1.5 位运算符 (了解)

结论:

  1. 位运算符操作的都是整型的数据
  2. << :在一定范围内,每向左移1位,相当于 * 2
    >> :在一定范围内,每向右移1位,相当于 / 2

面试题: 最高效方式的计算2 * 8 ? 2 << 3 或 8 << 1

class BitTest {public static void main(String[] args) {int i = 21;i = -21;System.out.println("i << 2 :" + (i << 2));System.out.println("i << 3 :" + (i << 3));System.out.println("i << 27 :" + (i << 27));int m = 12;int n = 5;System.out.println("m & n :" + (m & n));System.out.println("m | n :" + (m | n));System.out.println("m ^ n :" + (m ^ n));//练习:交换两个变量的值int num1 = 10;int num2 = 20;System.out.println("num1 = " + num1 + ",num2 = " + num2);//方式一:定义临时变量的方式//推荐的方式int temp = num1;num1 = num2;num2 = temp;//方式二:好处:不用定义临时变量  //弊端:① 相加操作可能超出存储范围 ② 有局限性:只能适用于数值类型//num1 = num1 + num2;//num2 = num1 - num2;//num1 = num1 - num2;//方式三:使用位运算符//有局限性:只能适用于数值类型//num1 = num1 ^ num2;//num2 = num1 ^ num2;//num1 = num1 ^ num2;System.out.println("num1 = " + num1 + ",num2 = " + num2);}
}

1.5 三元运算符

1.结构: (条件表达式)? 表达式1 : 表达式2
2. 说明
① 条件表达式的结果为boolean类型
② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
如果表达式为true,则执行表达式1。
如果表达式为false,则执行表达式2。
③ 表达式1 和表达式2要求是一致的。
④ 三元运算符可以嵌套使用

3. 凡是可以使用三元运算符的地方,都可以改写为if-else
反之,不成立。
4. 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。

class SanYuanTest {public static void main(String[] args) {//获取两个整数的较大值int m = 12;int n = 5;int max = (m > n)? m : n;System.out.println(max);double num = (m > n)? 2 : 1.0;//(m > n)? 2 : "n大";//编译错误//**************************n = 12;String maxStr = (m > n)? "m大" : ((m == n)? "m和n相等" : "n大");System.out.println(maxStr);//*****************************//获取三个数的最大值int n1 = 12;int n2 = 30;int n3 = -43;int max1 = (n1 > n2)? n1 : n2;int max2 = (max1 > n3)? max1 : n3;System.out.println("三个数中的最大值为:" + max2);//不建议//int max3 = (((n1 > n2)? n1 : n2) > n3)? ((n1 > n2)? n1 : n2) : n3;System.out.println("三个数中的最大值为:" + max3);//该写成if-else:if(m > n){System.out.println(m);}else{System.out.println(n);}}
}

2.分支结构中的if-else(条件判断结构)

一、三种结构

第一种:
if(条件表达式){
执行表达式
}

第二种:二选一
if(条件表达式){
执行表达式1
}else{
执行表达式2
}

第三种:n选一
if(条件表达式){
执行表达式1
}else if(条件表达式){
执行表达式2
}else if(条件表达式){
执行表达式3
}

else{
执行表达式n
}

Day04

1.If - else(补充)

说明:

  1. else 结构是可选的(就近原则)。
  2. 针对于条件表达式:
    > 如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
    > 如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
    > 如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行了。
  3. if-else结构是可以相互嵌套的。
  4. 如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略的。但是,不建议大家省略。

//random的简单使用

     int value = (int)(Math.random() * 90 + 10);// [0.0,1.0) --> [0.0,90.0) --->[10.0, 100.0) -->[10,99]System.out.println(value);//公式:[a,b]  :  (int)(Math.random() * (b - a + 1) )+ a

//一道例题,注意equals

/*
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
高:180cm以上;富:财富1千万以上;帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”*/import java.util.Scanner;class IfExer1 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入你的身高:(cm)");int height = scan.nextInt();System.out.println("请输入你的财富:(千万)");double wealth = scan.nextDouble();/*方式一:System.out.println("请输入你是否帅:(true/false)");boolean isHandsome = scan.nextBoolean();if(height >= 180 && wealth >= 1 && isHandsome){System.out.println("我一定要嫁给他!!!");}else if(height >= 180 || wealth >= 1 || isHandsome){System.out.println("嫁吧,比上不足,比下有余。");}else{System.out.println("不嫁!");}*///方式二:System.out.println("请输入你是否帅:(是/否)");String isHandsome = scan.next();if(height >= 180 && wealth >= 1 && isHandsome.equals("是")){ //注意这里System.out.println("我一定要嫁给他!!!");}else if(height >= 180 || wealth >= 1 || isHandsome.equals("是")){//和这里System.out.println("嫁吧,比上不足,比下有余。");}else{System.out.println("不嫁!");}}
}

2.分支结构中的 switch-case

1.格式
switch(表达式){
case 常量1:
执行语句1;
//break;

case 常量2:
执行语句2;
//break;

default:
执行语句n;
//break;

}

2.说明:
① 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。
当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构
末尾结束为止。

② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构

③ switch结构中的表达式,只能是如下的6种数据类型之一:
byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)

④ case 之后只能声明常量。不能声明范围。

⑤ break关键字是可选的。

⑥ default:相当于if-else结构中的else.
default结构是可选的,而且位置是灵活的。
⑦ 如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。

     //**************如下的两种情况都编译不通过*********************//情况一boolean isHandsome = true;switch(isHandsome){ //不支持布尔型case true:System.out.println("我好帅啊~~~");break;case false:System.out.println("我好丑啊~~~");break;default:System.out.println("输入有误~~~");}//情况二int age = 10;switch(age){case age > 18: //不能比大小System.out.println("成年了");break;default:System.out.println("未成年");}

3.For循环结构

一、循环结构的4个要素
① 初始化条件
② 循环条件 —>是boolean类型
③ 循环体
④ 迭代条件

二、for循环的结构

for(①;②;④){

}

执行过程:① - ② - ③ - ④ - ② - ③ - ④ - … - ②

     for(int i = 1;i <= 5;i++){//i:1,2,3,4,5System.out.println("Hello World!");}// i:在for循环内有效。出了for循环就失效了。

4.感想

希望能通过慢慢的练习,不断强化记忆,达到熟练程度。

5.补充点

如何从键盘获取不同类型的变量:需要使用Scanner类

具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量

注意:
需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException
导致程序终止。

//1.导包:import java.util.Scanner;
import java.util.Scanner;class ScannerTest{public static void main(String[] args){//2.Scanner的实例化Scanner scan = new Scanner(System.in);//3.调用Scanner类的相关方法System.out.println("请输入你的姓名:");String name = scan.next();System.out.println(name);System.out.println("请输入你的芳龄:");int age = scan.nextInt();System.out.println(age);System.out.println("请输入你的体重:");double weight = scan.nextDouble();System.out.println(weight);System.out.println("你是否相中我了呢?(true/false)");boolean isLove = scan.nextBoolean();System.out.println(isLove);//对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串System.out.println("请输入你的性别:(男/女)");String gender = scan.next();//"男"char genderChar = gender.charAt(0);//获取索引为0位置上的字符System.out.println(genderChar);}}

Day05

1.While 循环的使用

一、循环结构的4个要素
① 初始化条件
② 循环条件 —>是boolean类型
③ 循环体
④ 迭代条件

二、while循环的结构


while(②){
③;
④;
}

**执行过程:**① - ② - ③ - ④ - ② - ③ - ④ - … - ②

说明:
1.写while循环千万小心不要丢了迭代条件。一旦丢了,就可能导致死循环!
2.我们写程序,要避免出现死循环。
3.for循环和while循环是可以相互转换的!
区别:for循环和while循环的初始化条件部分的作用范围不同。

**算法:**有限性。

2.do-while循环的使用

一、循环结构的4个要素
① 初始化条件
② 循环条件 —>是boolean类型
③ 循环体
④ 迭代条件

二、do-while循环结构:


do{
③;
④;

}while(②);

**执行过程:**① - ③ - ④ - ② - ③ - ④ - … - ②

说明:
1.do-while循环至少会执行一次循环体!
2.开发中,使用for和while更多一些。较少使用do-while
3. 不在循环条件部分限制次数的结构:for(;

Java基础学习笔记及总结相关推荐

  1. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  2. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  3. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  4. 【已完结!】Java基础--学习笔记(零起点打开java世界的大门)--博客汇总表【附:视频、工程源码、资料、详细笔记】

    java零基础入门到精通(2019版)[黑马程序员] 视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:z ...

  5. Java基础学习笔记(二)_Java核心技术(进阶)

    本篇文章的学习资源来自Java学习视频教程:Java核心技术(进阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...

  6. Java基础学习笔记(三)_Java核心技术(高阶)

    本篇文章的学习资源来自Java学习视频教程:Java核心技术(高阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...

  7. Java基础(学习笔记)

    其他文章链接 Java基础 Java集合 多线程 JVM MySQL Redis docker 计算机网络 操作系统 文章目录 前言 1.⾯向对象和⾯向过程的区别 2.Java 和 C++的共性与区别 ...

  8. Java基础学习笔记(完结)

    Java基础 前言 一.Java基础语法 1.注释 2.标识符 3.数据类型 4.类型转换 5.变量.作用域.常量 6. 运算符 二.Scanner与流程控制 1. Scanner对象 2. 流程控制 ...

  9. 【学习记录-java】Java基础学习笔记

    学习Java的一些笔记 前言 java中字符串的比较 Stream 流之 sorted 运算符 Java包(package)的命名规范&规则 SWITCH CASE java中import作用 ...

  10. Java基础 学习笔记7

    1.Java中的集合框架概述 Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象. 集合的作用: a.在类的内部,对数据进行组织 b.简单而快速的搜索大数量的条目 c.有的 ...

最新文章

  1. 再见了Spring Cloud!这个架构有点厉害,甚至干掉了Dubbo!
  2. UITextFile
  3. 设计模式之——Template模板模式
  4. CKEditor上传视频(java)
  5. [python知识] 爬虫知识之BeautifulSoup库安装及简单介绍
  6. [css] 说说你对css盒子模型的理解
  7. (dag模型+最长路+字典序)嵌套矩形
  8. keras padding_GAN整体思路以及使用Keras搭建DCGAN
  9. 【Spark】Spark的Kryo序列化
  10. image加载图片 ui unity_【Unity游戏客户端框架搭建】四、资源管理之理论篇
  11. win10下安装maven
  12. 2022年五一建模比赛A题#五一建模
  13. 常见反爬虫方法及其应对策略
  14. Delphi 技术的优缺点与应用
  15. Keil4新建汇编模板工程
  16. CentOS7 设置笔记本触摸板
  17. 如何写论文的introduction
  18. 计算机视觉与深度学习(8)
  19. Android解析软件包时出现问题
  20. centos7dos命令下打开网络

热门文章

  1. 荤笑话与软件需求分析 荤笑话与软件需求分析
  2. vue核心原理之--理解Tree-Shaking
  3. 使用Teigha(OpenDesign)操作CAD的dwg文件
  4. 高斯混合模型(GMM)
  5. 数据库 SQL 时间处理函数 获取指定或最近期时间范围内 日期 月份 年份 列表
  6. 2019款奔驰E级:据说是成功人士都会买的一款车
  7. 2023兔年开工大吉
  8. 一般柱子与柱子的距离_建筑内部布置柱子 间距大概是多少?
  9. 探索思维导图:提升思维能力与效率的利器
  10. android sdk安装过程,图文详解Android 3.0 SDK安装教程