老话常说:基础不牢地动山摇,于是我在b站上看杨中科老师的课程脑补一下,便记录这岁月的点滴

1、什么是编程 ?

  • 编程:编写能够控制计算机来执行特定任务的代码。

2、什么是编程语言 ?

  • 编程语言:是指程序员和计算机沟通的语言,用编程语言编写的就是代码。

  • 自然语言:通常是指一种自然地随文化演化的语言。例如,汉语、英语、日语都是自然语言的例子。

3、学编程究竟学的是什么?

  • 语法?
  • 开发工具?
  • 框架?
  • 编程思想(程序化的思维方式) √

4、学习的心态:

  • 不要小看

  • 不要吓Niao

5、编程的学习方法是什么?

  • 不要题海战术。
  • 不要背代码,because代码背不完。
  • 要:理解、记笔记、通过笔记去写程序、脱稿流利写程序。

6、环境搭建

  • JDK:编译、运行Java程序,基本类库。

7、helloworld

首先我们要创建一个普通的Maven项目,取名为: JavaSE-01-HelloWorld

然后呢在./src/main/java目录下创建一个包,取名为com.baidou,目的是为了方便管理我们所写的类;

之后选中包名并鼠标右击,创建一个Java类,取名为Hello01

Hello01.java

package com.baidou;

// 主类名要与文件名保持同步
public class Hello01 {
// main方法是程序的执行入口 快捷键: psvm + tab键 或者 main + 回车
public static void main(String[] args) {
//控制台打印输出 快捷键: sout + 回车
System.out.println("lxm18");
}
}

关于缩进和大括号的猫腻:

  • 和Python不一样,Java中的缩进不是强制的,不过缩进可以让代码更清晰。
  • Java中{}同一行、换行两种习惯,没有什么区别。
if(xxx)
{
...
} if(xxx){
...
}

8、常用数据类型

程序 = 命令 + 数据 + 逻辑

例如:

整数:1、0、-1、365

小数:0.03、3.14、1.68

字符:'a'、'B'、'男'。一个汉字是一个字符。

字符串:"lxm18"、"我爱你中国"、"java"、""

布尔值:true、false

常用数据类型:

整数: 主要是int。还用long、short、byte等。

浮点数: 主要是float。还有double。

字符: char。

布尔: boolean。 

字符串: String。字符串中\和换行的转义("难点"):"hello\\world\n你好"

Test.java

package com.baidou;

public class Test1 {
public static void main(String[] args) {
int i1 = 5;
long i2 = 6;
float f1 = 3.14f;
double f2 = 3.14;
char c1 = '帅';
String s1 = "躺平";
String s2 = "巴适得板";
String s3 = "";
System.out.println(s1); String s4 ="hello\nworld"; // '/n' 算1个字符
System.out.println(s4.length()); //11
System.out.println(s4); String s5 = "hello\nworld\\123"; // '//'算一个字符 ---> '/'
System.out.println(s5); }
}

9、标识符(变量名等)命名规则

  • 只能由数字、字母、下划线_、美元符号$、中文字符组成。
  • 首字母不能是数字。
  • 大小写敏感的。max与Max是不同的。
  • 不能全部是关键字。break、case、char、for、if、void、int、long等。

10、注释

被注释的内容会被编译器忽略。

主要的作用:对代码进行解释说明。

原则:适当的注释。自解释的代码。

副作用:暂时停用部分代码。

// 单行注释

/*
多行注释
*/ /**
* 文档注释
*/

11、变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。

变量3部分:变量类型、变量名、变量值。

11.1、定义变量:

  • 变量要先定义后使用。

例如:

// 1、直接声明变量并赋值
int age = 18;
double pi = 3.14;
String name = "白豆五"; // 2、先声明变量后赋值
int age;
age=18;

11.2、引用已有变量:

主要的作用有两种:

  • 重新赋值。
  • 读取变量的数据。

例如:

int age = 0;
System.out.println(age); //读取变量的值
age = 18; //为已有的变量重新赋值
System.out.println(age); //读取变量的值

11.3、变量命名的规范

  • 要取有意义的变量名,不要a1、a2、c3、p。
  • 变量一般小写开头,尽量遵循驼峰。
  • 如果英语很不好或者专业术语不知道怎么翻译或者非专业程序员,可以根据情况决定用户中文变量名。

12、运算符

算数运算符:

+、- 、*(乘)、/(除)、%(取余)、++(自增)、--(自减)。

先乘除后加减,可以使用()改变运算优先级。

对于字符串也可以用+进行字符串连接操作。

例如:

/*
int i = 1+2+3+4+5+6-3*2/2;
System.out.println(i);
*/ // 用()小括号来改变运算的优先级 可以嵌套使用 从内到外执行
int i = 1 + 2 + 3 + 4 + 5 + (6 - 3) * 2 / 2;
System.out.println(i); int i2 = 1 / 3 * 3;
System.out.println(i2); //0 double d = 1.0 / 3 ;
System.out.println(d); //0.3333333333333333 String name = "巴";
String name2 = "适";
String name3 = "得";
String name4 = "板";
String s = name + name2 + name3 + name4; //拼接字符串
System.out.println(s); //巴适得板 /**
* 表达式从左向右执行 除非()改变优先级
* 其他数据类型遇到字符串之后就都按照字符串来进行运算
*/
System.out.println(1 + "1" + 1); //111
System.out.println(1 + 1 + "1"); //21
System.out.println("1" + 1 + 1 ); //111
System.out.println("1" +( 1 + 1) ); //12
System.out.println(3+(6+"a")+("b"+(1+2)*3)); //36ab9

赋值运算符:

赋值:=
加等于:+= a+=b等价于a=a+b
减等于:-=
除等于:/=
模等于:%=

顺序执行:程序从上往下逐一执行,一条执行结束再执行下一条。

关系运算符:

小于:<
小于等于:<=
大于:>
大于等于:>=
等于:==
不等于:!=
关系运算符的结果为boolean类型。

:java 中 equals 和 == 的区别:

  • 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
  • == 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
  • equals 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
  • == 比较的是2个对象的地址,而 equals 比较的是2个对象的内容,显然,当 equals 为 true 时,== 不一定为true。

逻辑运算符:

三元运算符:

布尔表达式 ? 表达式1 : 表达式2
int a = 9;
int b = 1;
int c = a > b ? 666 : 888;
System.out.println(c); // 666

13、选择结构

目的:满足某些条件的时候才执行一段代码。

两种语句:if 、switch 。if 用的最多,可以代替 switch 。

13.1、第一种IF:

if(表达式)
{
语句块
}

1、语句可以是单行语句,也可以是复合语句;

2、如果是单行语句,{}可以省略,但最好不要省略;

3、整个 if 是一个逻辑语句,因此不能直接在 if 后面加分号。

例如:

int age = 19;
if (age>18)
{
System.out.println("到达主战场");
}

13.2、第二种IF:

if(表达式)
{
语句1
}
else
{
语句2
}

例如:

int score = 80;
if (score >= 60) {
System.out.println("合格");
} else {
System.out.println("尚未合格");
}
}

13.3、第三种IF:

if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
...
else
{
语句n;
}

有点像一给我里giao giao,那鬼东西。

例如:

int score = 1011;
if (score <60)
{
System.out.println("不及格");
}
else if(score>= 60&& score <70 )
{
System.out.println("及格");
}
else if (score>=70&&score<80)
{
System.out.println("一般");
}
else if (score>=80&&score<90)
{
System.out.println("中等");
}
else
{
System.out.println("优秀");
}

还有的就是IF嵌套。

if(表达式1){
if(表达式2){
语句1;
}else{
语句2;
}
}else{
语句3;
}

13.4、SWITCH:

可以被if替代,用的少。

switch(条件表达式)
{
case 条件1:
语句1;
break;
case 条件2:
语句2;
break;
...
default:
语句;
}

14、循环结构

目的:反复执行N次(或一直执行)某段代码。

三种语句:for、while、do......while。

循环就好比操场跑圈,当达到圈数时,证明你的体育测试是有成绩的哈哈

14.1、WHILE

while(条件表达式)
{
循环体
} 先判断条件表达式,如果为ture就执行循环体,执行完循环体再判断条件表达式......

例如:

// 从10倒数到0
int i = 10;
while (i>=0)
{
System.out.println("白豆五"+i);
i--;
}
System.out.println("while结束"); 控制台输出:
白豆五10
白豆五9
白豆五8
白豆五7
白豆五6
白豆五5
白豆五4
白豆五3
白豆五2
白豆五1
白豆五0
while结束 // 统计0到10的和
int j = 0;
int sum = 0; //创建一个临时变量用于加和操作
while (j <= 10)
{
sum += j;
j++;
}
System.out.println(sum); //55 // 用while循环实现:从5打印到11
int y = 5;
while(y <= 11)
{
System.out.println(y);
y++;
}

14.2、FOR

既 WHILE 何生 FOR

  • while 、do...while 、for 都可以实现循环,可以互换。
  • 不同的需求,用不同语法难易程度不同。
  • 使用频率:for > while > do...while 。
for(表达式1;表达式2;表达式3)
{
循环体;
} (1)先执行表达式1,只会执行一次。
(2)执行表达式2,如果该表达式2结果为真,执行for循环体,然后执行下面第(3)部。如果为假,直接结束for循环。
(3)执行表达式3,然后跳到第(2)步重新执行。

用while表示for:

表达式1;
while(表达式2)
{
循环体;
表达式3;
}

例如:

for (int i=1;i<=10;i++)
{
System.out.print(i+"\t"); // 1 2 3 4 5 6 7 8 9 10
} // 第二种声明
int j = 0; //将之前for循环内部的局部变量,丢到循环体外面相当于提权,然后都可以调用这个变量。
for(;j<=3;j++)
{
System.out.println(j);
} // 用while等价for
int i = 0;
while (i <= 10)
{
System.out.println(i);
i++;
} // 从10倒数到0
for (int i = 10; i >= 0; i--) {
System.out.print(i + "\t");
} // 统计0到10的和
int sum = 0;
for (int i = 0; i <= 10; i++) {
sum += i;
}
System.out.println(sum); // 打印2 4 6 8 10
for (int y = 2; y <= 10; y = y + 3) {
System.out.println(y);
}
int z;
for (z = 0; z <= 3; z++) ;
{
System.out.println(z);
}

14.3、循环嵌套

  • 循环嵌套:循环里套着循环。此套娃非彼套娃。嵌套循环可以是嵌套n层,一般也就用两层。

  • 三种循环(while、do...while、for)可以相互嵌套,不过使用最多的是for循环嵌套。

例如:

// 外层循环一次内层循环三次
for (int i= 0;i<3;i++)
{
for (int j = 1;j<=3;j++)
{
System.out.println(i+","+j);
}
}

14.4、BREAK和CONTINUE

  • break 和 continue都可以和while、do...while、for 一起用。
  • break:强制结束循环。
  • continue:不再执行本次循环后面的代码,进行下一次循环。

例如:

//break
for (int i=0;i<=5;i++){
if (i==3){
break;
}
System.out.println(i);
}
打印结果:
0
1
2 // continue
for (int i=0;i<=5;i++){
if (i==3){
continue;
}
System.out.println(i);
}
打印结果:
0
1
2
4
5

例如:

// 循环打印99乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j) + "\t");
}
System.out.println();
} 1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

15、数组

  • 如果记录全班同学的姓名,难道声明60个String变量?

  • 有序数据的集合就是数组(Array)。

  • 数组中每项都有一个编号,被称为数组下标,通过下标就可以找到数组中指定的数据,也可以给指定位置赋值。

15.1、数组的定义和初始化

第一种方式:
int[] a = {1,2,3,4,5}; 第二种方式:
int[] a = new int[5];
每个元素的初始值为默认值。int、double等默认值是0,boolean默认值是false,String等默认值是null。

15.2、引用元素

  • 数组元素的下标从0开始,最后一个元素的下标为"长度-1"。

  • 引用数组的形式:数组名[下标]

数组+下标使用:

  • a[2]单独使用或者放到=右边,就是取值,放到=左边就是赋值。
  • 数组元素完全可以当作变量使用,可以进行数学运算、赋值操作、自加、自减操作...等。

举例:如何给元素赋值、取值?

int[] nums1 = {99, 77, 66, 22};
int[] nums2 = new int[8];
System.out.println(nums1[2]); //66
System.out.println(nums2[1]); //0
nums2[1] = 3; //赋值操作
System.out.println(nums2[1]); //3
nums1[0] = nums1[1] + nums2[1];
System.out.println(nums1[0]); //80

数组越界:

一切类型皆可数组:

String[] str1 = new String[10];
String[] str2 = {"hello","白豆五"};
byte[] bytes1 = new byte[];
byte[] bytes2 = {3,5,7,9};

15.3、数组长度

  • 通过 数组名.length 来获取数组长度。
  • 避免魔法数。
String[] str1 = new String[5];
int len = str1.length;
System.out.println(len);

15.4、遍历数组

如果直接打印数组他会输出一串内存地址,而并非是我们想要的数据。

 int[] ints = {77,2,3,45,6,8,3,1};
System.out.println(ints); //[I@1540e19d

所以接下来学习遍历数组。

第一种方式:使用FOR循环遍历数组
int[] ints = {77,2,3,45,6,8,3,1};
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]);
}
第二种方式:使用增强FOR循环遍历数组(jdk1.5的新特性)

如果只是对数组进行从头到尾的遍历获取值,可以用如下写法:

for(元素类型 item:arr)
{ }

例如:

int[] ints = {77,2,3,45,6,8,3,1};
for (int i : ints) {
System.out.println(i);
}
第三种方式:通过Arrays.toString(arr);遍历数组。
//导包
import java.util.Arrays; int[] ints = {77, 2, 3, 45, 6, 8, 3, 1};
String str = Arrays.toString(ints);
System.out.println(str);
小测试

test1:打印除小红以外所有同学姓名。

System.out.println("-------begin--------");
String[] str = {"小明", "小红", "小黄", "小绿", "小黑"};
for (String name : str) {
if ("小红".equals(name)){
continue;
}
System.out.println(name);
}
System.out.println("-------end--------");

test2:逆向输出数组的值。

System.out.println("-------begin--------");
String[] str = {"小明", "小红", "小黄", "小绿", "小黑"};
for (int i = str.length - 1; i >= 0; i--) {
System.out.println(str[i]);
}
System.out.println("-------end--------");

test3:逐位计算两个数组,并将值赋给第三数组。

System.out.println("-------begin--------");
int[] nums1 = {9, 8, 7};
int[] nums2 = {3, 1, 2};
int[] nums3 = new int[nums1.length];
for (int i = 0; i < nums1.length; i++) {
nums3[i] = nums1[i] + nums2[i];
}
System.out.println(Arrays.toString(nums3));
System.out.println("-------end--------\n");

test4:查找数组中最大值。

System.out.println("-------begin--------");
int[] nums = {3, 1, 2, 9, 8, 7};
int max = 0;
for (int i = 0; i < nums.length; i++) {
int n = nums[i];
if (n > max) {
System.out.println(n+"比目前的最大值大"+max+",因此更新最大值为"+n);
max = n;
}else {
System.out.println(n+"不比目前的最大值"+max+"大");
}
}
System.out.println(max);
System.out.println("-------end--------\n");

16、方法

16.1、什么是方法?

  • 方法(method)也可以叫函数(function)。

  • 方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,也就是说一个方法只完成一个功能,这样利于我们后期的扩展。

16.2、方法的组成

方法:由方法名、参数、返回值组成。

  • 方法名:是别人调用本"命令"的标识符。
  • 参数:是调用方法的时候传递的数据。方法可能没有参数,可能有1个或多个参数。
  • 返回值:是方法调用完成的结果。方法可能没有返回值,对于有返回值的方法,我们也可以忽略返回值。
修饰符 返回值类型  方法名(参数列表){
方法体
return 返回值;
} 如果方法没有返回值,则把"返回值类型"改写为"void",然后把"return xxx;"去掉。

例如:

public int printA(int a){ //这里的a指的是形参
a=10;
return a;
}

16.3、方法重载

方法重载:就是在一个类中,有相同的函数名称,但形参不同的函数。

方法重载规则:

  • 方法名称必须相同;

  • 参数列表 必须不同 (个数不同,类型不同,参数排列顺序不同);

  • 方法的返回类型可以相同也可以不同;

  • 仅仅返回类型不同不足以成为方法重载;

16.4、方法的调用

  • 方法名(参数列表);
  • 或者有返回值且需要有返回值,则:变量=方法名(参数列表);

举例:调用System.out的方法、Arrays.toString()。

调用方法的时候需要提前把对应方法中的类import进来(俗称导包)。

JavaSE-QuickStart的更多相关文章

  1. 用大白话聊聊JavaSE -- 如何理解Java Bean(一)

    首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...

  2. javaSE基础07

    javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...

  3. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  4. javaSE基础05

    javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...

  5. javaSE基础04

    javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...

  6. javaSE基础03

    javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...

  7. [译]App Framework 2.1 (1)之 Quickstart

    最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和 ...

  8. 免安裝、免設定的 Hadoop 開發環境 - cloudera 的 QuickStart VM

    cloudera 的 QuickStart VM,為一種免安裝.免設定 Linux 及 Hadoop,已幫你建好 CDH 5.x.Hadoop.Eclipse 的一個虛擬機環境.下載後解壓縮,可直接以 ...

  9. 用大白话聊聊JavaSE -- 自定义注解入门

    注解在JavaSE中算是比较高级的一种用法了,为什么要学习注解,我想大概有以下几个原因: 1. 可以更深层次地学习Java,理解Java的思想. 2. 有了注解的基础,能够方便阅读各种框架的源码,比如 ...

  10. javaSE基础02

    javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...

随机推荐

  1. C语言-内存函数的实现(一)之memcpy

    C语言中的内存函数有如下这些 memcpy memmove memcmp memset 下面看看memcpy函数 memcpy 我们想想,之前有那个字符串拷贝的函数,即strcpy函数.都有拷贝的函数 ...

  2. 小程序使用 Promise.all 完成文件异步上传

    小程序使用 Promise.all 完成文件异步上传 extends [微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 - Kindear - 博客园 (cnblogs.com)] ...

  3. 统计学习方法——实现AdaBoost

    Adaboost 适用问题:二分类问题 模型:加法模型 \[f(x)=\sum_{m=1}^{M} \alpha_{m} G_{m}(x) \] 策略:损失函数为指数函数 \[L(y,f(x))=ex ...

  4. mybatis的本质和原理

    背景 项目需要,我们需要自己做一套mybatis,或者使用大部分mybatis的原始内容.对其改造,以适应需要.这就要求我再次学习一下mybatis,对它有更深入的了解. 是什么    MyBatis ...

  5. 01- linux入门

    LINUX是什么? -linux是计算机操作操作系统 -常见的操作系统有:Windows,Android,苹果iOS,Mac系统,Unix(和linux类似) 操作系统是干什么的? 管理硬件和程序的一 ...

  6. hdu1146

    题意:       题意最蛋疼,其实是水题,这个题意整的我wa了一个多小时,我就改改题意吧..有一条河,刚开始的时候在左岸有一条船,这条船最多能运n个货物,一趟的时间是t,有m个货物,每个货物有自己到 ...

  7. hdu1568斐波那契前4位

    题意:      就是求斐波那契数,但是只要求输出前四位,(n<=100000000). 思路:      这个要用到斐波那契的公式和一些log的规律,直接打看着很乱,直接在网上偷张图片吧:   ...

  8. POJ3422简单费用流

    题意:      给一个n*n的矩阵,从左上角走到右下角,的最大收益,可以走k次,每个格子的价值只能取一次,但是可以走多次. 思路:       比较简单的一个费用流题目,直接拆点,拆开的点之间连接两 ...

  9. 通过使用 NTLite 工具实现精简Windows系统

    NTLite 是一款专业于Windows平台的系统精简工具,NTLite主要面对系统封装人员使用,比如各大下载站及GHO镜像下载站,Windows系统二次精简封装打包使用,NTLite可以对系统进行极 ...

  10. android之Frame Animation

    一.在xml文件中设置帧动画 1.首先得在drawable资源文件夹下创建一个animation_list文件 <?xml version="1.0" encoding=&q ...