java学习--基础知识进阶第一天--笔记

Posted 大橙有C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习--基础知识进阶第一天--笔记相关的知识,希望对你有一定的参考价值。

今日内容
复习基础班的内容
静态static关键字
代码块

Java基础语法前三天
运算符
算术运算符
+ - * / % ++ --

/:整数相除得到的结果是整数 3/-2=-1
%:取模的结果的符号取决于被除数,和除数无关 3%-2=1 -3%2=-1 -3%-2=-1

++和--在前和在后的问题
单独使用:没有区别
参与了其他运算:
++在前,先自增,然后将自增后的结果再参与其他运算
++在后,先将变量参与其他运算,然后再自增

赋值运算符
= += -= *= /= %=
关系运算符
> < >= <= == !=
逻辑运算符
& | ^ ! && ||
&和&&:遇false则false,只有左右两边的都为true时结果才为true
|和||:遇true则true,只有左右两边都为false时结果才为false
^:只有当左右两边不同时,一个是true一个是false时结果才为true

&和&&的区别
&&具有短路效果,如果运算符左边为false时,右边就不执行
&是没有短路效果的,不管运算符左边为false还是true,右边都会执行

三元运算符
格式:
布尔表达式?表达式1:表达式2;


流程控制语句
顺序结构:代码从上往下依次执行

选择结构
if语句
格式一:
if(布尔表达式){
语句体;
}
格式二:
if(布尔表达式){
语句体1;
}else{
语句体2;
}
格式三:
if(布尔表达式1){
语句体1;
}else if(布尔表达式2){
语句体2;
}else if(布尔表达式3){
语句体3;
}
...
else{
语句体n+1;
}

switch语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}

注意事项:
(1)表达式的数据的类型只能是byte short int char String 枚举
(2)case穿透问题,case后面的break是可以省略的,如果省略了就会继续往后执行其他case中的内容
而不需要判断case的值,直到遇到break或者switch语句的右大括号位置
(3)default的位置问题,default语句可以位于所有的case语句之前,也可以位于所有的case语句之后
还可以位于多个case语句执行,甚至可以省略。default语句的位置不影响执行流程

循环结构
for循环
格式:
for(初始化表达式;布尔表达式;循环后的执行表达式){
循环体;
}
while循环
格式:
while(布尔表达式){
循环体;
}

初始化表达式;
while(布尔表达式){
循环体;
循环后的执行表达式;
}

do...while循环
格式:
do{
循环体;
}while(布尔表达式);

跳出循环语句
break
使用场景:循环和switch语句中使用
特点:
结束所在最近的整个循环
continue
使用场景:只能在循环中使用
特点:
结束本次循环,继续下一次循环

Scanner类和Random类
Scanner是用于键盘录入
Random由于生产随机数

步骤:
(1)导包
import java.util.Scanner;
import java.util.Random;
(2)创建对象
Scanner sc = new Scanner(System.in);
Random r = new Random();
(3)调用方法
Scanner类
nextInt()
nextLine()
Random类
nextInt(int n):生成的随机数是一个整数,范围在[0,n)

关键字


标识符
用于给包、类、方法、变量和常量等取名字的

组成规则:
(1)数字
(2)字母
(3)下划线(_)
(4)美元符($)

命名规范:


注释
//

/*
*/

/**
*
*/

数据类型

方法
方法的概述
什么是方法:是实现某种功能的代码块

优点:
提高代码的复用性
方法的格式
修饰符 返回值类型 方法名(参数列表){
方法体;
return 返回值;
}

修饰符:public static
返回值类型:
和返回值是对应的关系,如果返回的是10这样的整数,那么返回值类型就是int类型
返回值类型可以是具体的类型,如果没有返回值那么类型就必须写void,不能省略
方法名:
使用合法的标识符取名,还要按照规范,见名知义
参数列表:可以有多个参数,也可以没有参数
数据类型
变量名
方法体:功能执行的主体
返回值:方法运行得到的结果
return:两个作用,一个是返回方法执行的结果,另一个是结束方法


两个明确
返回值类型
参数列表

方法的调用
有返回值的方法
(1)单独调用
(2)输出调用
(3)赋值调用
无返回值的方法
(1)单独调用

方法的重载
条件:
(1)在同一个类中,方法名相同
(2)参数列表不同(个数不同,类型不同,顺序不同)

方法的参数传递问题
基本数据类型的参数传递:传递的是值,不改变原来的值
引用数据类型的参数传递:传递的是地址值,改变原来的值

数组
数组的概述

数组的特点
(1)是一个容器,可以存储多个“同一种类型”的数据
(2)既可以存储基本数据类型,也可以存储引用数据类型的数据
(3)一经定义长度就固定
(4)有整数索引,范围在0~数组的长度-1

数组的初始化
动态初始化:给定数组的长度,由系统赋默认初始值

数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[5];

静态初始化:给定元素的值,由系统确定数组的长度

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
int[] arr = new int[]{1,2,3,1};

数据类型[] 数组名 = {元素1,元素2,...};
int[] arr = {1,2,3,1};

数组的内存图
int[] arr = new int[5];
int[] arr2 = arr;

数组的取值和赋值
取值:
数组名[索引]
arr[1]

赋值:
数组名[索引] = 新值;
arr[1] = 10;

索引:范围在0~数组的长度-1
长度:length属性获取数组的长度

数组的操作
遍历:依次取出数组中的元素
求最值:获取数组中的最大值和最小值
查找:给定指定的元素,查询其在数组中第一次出现的索引
反转:将数组中的元素倒过来,第0索引的元素和arr.length-1索引出的元素交换,第1索引的元素和arr.length-2索引出的元素交换,以此类推
排序(选择排序、冒泡排序):按照某种顺序(从小到大,或者从大到小)对数组中的元素进行重新排列

数组排序:
int[] arr = {2,1,9,5,8};// {1,2,5,8,9}
冒泡排序:拿前一个元素和后面一个元素进行比较,如果前面的元素比后面的大,就交换位置,所有的元素这样排完之后可以实现升序排列。

选择排序:选择其中一个元素,依次和数组中的其他元素进行比较

定义标准的学生类
成员变量
*private修饰
构造方法

无参构造方法
public 类名(){}
有参构造方法 *this
public 类名(参数列表){}

成员方法

getters和setters方法 *this
public void 方法名(){方法体}



static关键字
静态修饰符,可以修饰成员变量和成员方法,不能修饰构造方法

static的特点:
(1)修饰的成员不属于某个具体的对象,而是属于类的,被所有的对象所共享
(2)可以直接用类名.的方式来调用
(3)随着类的加载而加载,出现先于主方法,出现也先于对象

注意事项:
静态方法只能调用静态的成员变量和成员方法,不能调用非静态的成员变量和成员方法
非静态的方法既可以调用静态的成员也可以调用非静态的成员

静态方法中有没有this?没有

静态的优缺点
优点:
节省内存空间
调用更方便了,直接用类名.的方式调用

缺点:
局限性,静态只能调用静态的成员

静态的选择:
成员变量:
当成员变量为所有的对象所共享,这时就可以用static修饰
当静态的成员方法需要调用该成员变量时,由于静态只能调用静态,这时也可以将成员变量使用static
成员方法:
(1)一般方法上来必须不使用static修饰,在工具类中常常为了方便方法的调用会将方法用static修饰
(2)如果方法需要被main方法直接调用,这时可以将方法用static修饰


工具类
特点:
(1)构造方法被private修饰
(2)方法都是static修饰的


代码块(4种)
局部代码块
位置:在方法中
格式:
{
}
作用:限定变量的作用域
构造代码块
位置:类中方法外
格式:+
{
}
作用:抽取构造方法中的共性内容
特点:
每一次创建对象都会执行
先于构造方法执行
静态代码块
位置:类中方法外
格式:
static{

}
作用:做一些前期的数据准备或者初始化操作
特点:
随着类的加载而执行,只会执行一次
优先于构造代码块执行
优先于主方法执行

同步代码块(多线程学习)



























































































































































































































































































































































以上是关于java学习--基础知识进阶第一天--笔记的主要内容,如果未能解决你的问题,请参考以下文章

java学习--基础知识进阶第三天--笔记

java学习--基础知识进阶第十三天--笔记

java学习--基础知识进阶第四天--笔记

java学习--基础知识进阶第二天--笔记

python学习笔记-第一天(Linux基本操作与Python的基础)

Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例