WY的Java学习笔记(1)基础

Day01.[环境变量,HelloWorld,变量,常量]


2023年2月23日,算是第一天学习,感觉还好,效率很高。

第一章.Java语言前言

1.Java的介绍

1.计算机编程语言:电脑能看懂的语言,我们用过编写计算编程语言,让计算机识别,帮我们去做事儿

2.Java之父: 詹姆斯 高斯林

3. 1995:诞生

1996:JDK1.0

1998:JDK1.2

J2SE J2EE J2ME

2004:JDK1.5

JavaSE JavaEE

2014:JDK1.8

3.Java常用版本(主流):JDK8

2.字节

1.概述:计算机存储的最小单元,用byte代表字节或者用B

8个二进制(bit)位是一个字节

2.存储单元换算

8bit = 1byte

1024byte = 1KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

3.dos命令

命令

说明

盘符名:

切换盘符 (盘符名,不区分大小写)

dir

查看当前目录下的内容

cd 文件夹名称

进入到指定文件夹里面

cd 文件夹名\文件夹名

进入到多级文件夹中

cd..

退到上一级

cd\

直接退到根目录

cls

清屏

exit

退出dos命令窗口

mkdir 文件夹名

创建单级文件夹

mkdir 文件名\文件夹名

创建多级文件夹

del 文件名

删除指定文件

del *.后缀名

批量删除指定的文件

rd 文件夹名字 (文件夹必须是空的)

删除文件夹

小结:
1.快速进入到指定的位置
选中要进入的目录路径--> 打cmd->回车
2.如何补全文件名或者文件夹名
tab键
3.按上下箭头->找到之前打过的命令

第二章.Java所需环境

1.Jvm和跨平台
1.JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境之一,也是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在JVM之上。
java程序运行之前需要先编译,编译生成一个字节码文件(.class结尾的文件),jvm运行就是运行的这个.class文件
2.跨平台:跨越不同的操作系统,java程序可以在不同的操作系统上运行,需要jvm的支持
3.jvm和跨平台的关系:一个java代码想要在不同的操作系统上运行,就需要不同版本的jvm的支持
2.JDK和JRE

1.JRE(Java Runtime Environment):java程序运行时所需要的环境,包含`JVM` 和运行时所需要的`核心类库

2.JDK(Java Development's Kit):是Java程序开发工具包,包含`JRE` 和开发人员使用的工具

3.环境变量的配置

1.对着"此电脑",右键 -> 属性--> 高级系统设置 -> 环境变量
2.在"系统变量"中点击"新建"
3."变量名":JAVA_HOME
"变量值":jdk bin 路径的上一级路径
4.找到"path",点击"编辑"
添加:%JAVA_HOME%\bin

第三章.HelloWorld

  1. 开发三步骤

编写 编译 运行

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}

//编译:  javac HelloWorld.java
//运行:  java HelloWorld
2.注释

对代码进行了解释说明,不参与编译和运行

分类:单行注释: //

多行注释: /* */

文档注释:/** */ 说明书

3.注意事项
1.如果这个类不是public,那么源文件名可以和类名不一致。
如果这个类是public,那么要求源文件名必须与类名一致。
最好类名要和文件名保持一致。
2.一个源文件中可以有多个类,编译后会生成多个.class字节码文件。但是一个源文件只能有一个 public的类。
3.main不是必须在public的类中,但是基本上main习惯上都在public类中。

第四章.命名规范

标识符:在程序中开发人员(我自己),自己定义的名字,就是标识符

26个字母区分大写小写,0-9的数字,下划线 _和 $,不能是关键字,不能是数字开头

命名规则(驼峰,骆驼命名法):

的名字:首字母大写,后面每个单词首字母大写

HelloWorld BeiJingShiChangPingQuHuiLongGuan

方法的名:首字母小写,后面每个单词首字母大写

sayHello queryName

变量的名:首字母小写,后面每个单词首字母大写

常量的名:所有的字母全部大写

MAX_AGE

  1. 关键字

关键字:java提前定义好的,具有特殊含义的小写单词

2.常量
1. 概述: 在代码运行的过程中,值不会发生改变的数据,叫常量
2. 分类:
整数常量: 所有的整数
小数常量: 所有带小数点的 2.5 2.0
字符常量: 带单引号的 '' 单引号中必须有且只能有一个内容
'a' 算
'A' 算
'中' 算
'' 不算
'11' 不算
' ' 算
' ' 不算

字符串常量: 带双引号的 "" 双引号中随意
"" 算
"柳岩" 算
"翠儿" 算
"涛" 算
" " 算
布尔常量 :true false -> 都是用在判断上
空常量: null 代表的是数据不存在 不能直接使用,也不能直接被打印

输出二进制数据 0B开头

输出八进制数据 0开头

输出十六进制数据0X开头

Day02.[变量 数据类型转换 运算符 ]

第一章.变量

数据类型

关键字

内存占用

取值范围

字节型

byte

1个字节

-128 至 127 定义byte变量时超出范围,废了

短整型

short

2个字节

-32768 至 32767

整型

int(默认)

4个字节

-2^31^ 至 2^31^-1 正负21个亿

长整型

long

8个字节

-2^63^ 至 2^63^-1 19位数字

单精度浮点数

float

4个字节

1.4013E-45 至 3.4028E+38

双精度浮点数

double(默认)

8个字节

4.9E-324 至 1.7977E+308

字符型

char(无符号类型)

2个字节

0 至 2^16^-1

布尔类型

boolean

1个字节

true,false

1.概述:在代码的运行过程中,值会发生改变的数据,叫变量
2.作用:一次可以存储一个数据
3.定义:(三要素)
a.数据类型 变量名 = 值;
b.数据类型 变量名;
变量名 = 值

4.数据类型:基本数据类型和引用数据类型
基本数据类型:4类8种
整型: byte short int long
浮点型:float double
字符型:char
布尔型:boolean
引用数据类型:
类 数组 接口 注解 枚举

d.在变量中,String不属于基本类型,String本身是一个类,所以属于引用类型,但是定义和基本类型一样
String 变量名 = ""

6.变量类型按照取值范围从小到大排序
byte short char -> int -> long -> float -> double
取值范围大的叫大类型(相对的)
取值范围小的叫小类型(相对的)
/*
        long
        由于我们直接写一个整数,默认类型为int
        所以我们定义long型时,数后面习惯加一个L
        */
        long num4 = 10000L;
        System.out.println(num4);    
        /*
        float
        由于我们直接写一个小数,默认类型为double型
        所以我们定义float型变量时,习惯上给小数后面加F
        */
        float num5 = 2.5F;
        num5 = 3.5F;
        System.out.println(num5);
//  转义字符     \
\n    代表的是换行
        System.out.print("床前明月光");
        System.out.print("\n");
\t  制表符  相当于tab键
        System.out.println("hah"+'\t'+"haha");
用char类型表示一个'
        char c = '\'';
        System.out.println(c);
在java中,如何去表示一个路径  
          \\ 代表  \  将后面的\转义成了普通的\

原码 反码 补码

计算机在存储数据的时候都是存储的数据的补码,而计算的也是数据的补码

1.正数二进制最高位为0;负数二进制最高位是1

2.正数:

原码,反码,补码一致

如:5的源码,反码,补码为:

0000 0101->二进制最高位是0,因为是正数

3.负数:

反码是原码的基础上最高位不变,其他的0和1互变

补码是在反码的基础上+1

如:-9

原码:0000 1001

反码:1111 0110

补码:1111 0111

第二章.数据类型转换

1.什么时候发生数据类型转换?

当等号左右两边类型不一致时

2.类型转换有哪些方面:

自动类型转换:将小类型自动提升为大类型

强制类型转换:将大类型强制转成小类型

3.按照取值范围从小到大排列数据类型

byte short char -> int-->long->float->double

声明变量时:大类型可以直接赋值给小类型,小类型不可以直接赋值给大类型。

1.自动类型转换

1.什么时候发生:

取值范围大的数据类型 变量名 = 取值范围小的数据类型 -> 小类型会自动提升为大类型

2.取值范围小的类型遇到取值范围大的类型,也会自动类型转换,小类型会自动提升为大类型

2.强制类型转换

1.什么时候需要强制类型转换

取值范围小的数据类型 变量名 = 取值范围大的数据类型 -> 会报错

2.怎么强转:

取值范围小的数据类型 变量名 = (取值范围小的数据类型)取值范围大的数据类型

public class Demo08DataType{
   public static void main(String[] args){
       /*
         2.5默认类型为double型
         num1是int型     
         将double型赋值给了int型->将取值范围大的类型赋值给了取值范围小的类型->报错需要强转
       */
      //int num1 = 2.2;  
      int num1 = (int)2.9;
      System.out.println(num1);
   }
}
强转的注意事项
1.强转容易出现精度损失,数据溢出现象
2.byte short如果等号右边是整数常量,没有超出byte,short的取值范围,不用强转(jvm优化)
byte short如果等号右边有变量参与,结果再赋值给byte,short型的变量,此时,byte short会自动提升为int
需要手动强转

3.char类型如果参与运算,自动提升为int型
char类型一旦被提升为int型,就会自动去码表中查询字符对应的int值-->ASCII码表
a--97
z--122
A--65
Z--90
0--48
9--57
如果在ASCII码表中找不到字符对应的int值,会自动去unicode码表(万国码)

第三章.运算符

+(加法)
-(减法)
*(乘法)
/(除法)
%(模->取余)
负数取余数,以前面的符号为准
(-5%3)=-2 (5%-3)=2
+
作用1:运算符号
作用2:字符串拼接 -> 任何类型遇到字符串都会变成字符串 直接往后拼
++ --
1.只能和变量一起使用 i++ ++i
2.使用:
单独使用:自增自减自己独立成为一句
i++;
符号在前在后都是先运算,再使用运算后的值
混合使用:自增自减和其他语句混合使用了(赋值语句,输出语句)
a.符号在前: 先运算,然后再使用运算后的值
b.符号在后: 先用原来的值,使用完毕自身再计算
基本赋值运算符
= : 将等号右边的数据赋值给等号左边的变量
复合赋值运算符
+=:
int i = 10;
i+=1 -> i = i+1
-=
*=
/= : 如果是两个整数,取整数部分,如果有一个为小数,结果就带小数点
%= : 取余数
int i = 10;
i%=3 -> i = i%3

注意:byte short 如果是复合赋值运算,不需要手动强转(jvm自动转了)

关系运算符(比较运算符)

1.作用:专门用于比较条件,结果都是boolean型

2.分类

== > < >= <= !=

逻辑运算符
1.作用: 连接关系运算符 结果为boolean型
2.都有啥:
&&(与):有假则假 符号前后有一个结果为false,结果就是false
||(或):有真则真 符号前后有一个结果为true,结果就是true
^(异或):符号前后结果相同为false,结果不同为true
false^false false
true^true false
false^true true
true^false true
!(非):非true就是false 非false就是true
|:如果符号前后为比较运算符,这个符号就是逻辑元素符,有真则真
如果符号前后为数字,这个符号是位运算符
||(短路或):有真则真,如果符号前面为true,后面不看了
需求:定义一个变量x,随意给值,判断x是否在1-100之间
1<=x<=100 数学写法
x>=1 && x<=100 java正确写法

三元运算符

1.格式

boolean表达式?表达式1:表达式2

2.执行流程

先走boolean表达式,如果是true,走?后面的表达式1,否则走:后面的表达式2

  • 左移:<<

2<<2 等于8

相当于:2*(2的2次方)

  • 右移:>>

  • 无符号右移:>>>

运算规则:往右移动后,左边空出来的位直接补0,不管最高位是0还是1空出来的都拿0补

  • 按位与:&

  • 按位或:|

  • 按位异或:^

  • 按位取反:~

运算规则:~0就是1

~1就是0

Day03.[流程控制]

第一章.IDEA的使用

破解
新建 工程 Project(empty project)-- 模块 Module--src下新建包Package--包名 com.atguigu.名字 --新建class类
里面放的都是java文件
工程 Project下 有out文件 里面放class文件
out路径是专门存放idea自动编译生成的.class文件的
1.快捷键

快捷键

功能

Alt+Enter

导入包,自动修正代码(重中之重)

Ctrl+Y

删除光标所在行

Ctrl+D

复制光标所在行的内容,插入光标位置下面

Ctrl+Alt+L

格式化代码

Ctrl+/

单行注释

Ctrl+Shift+/

选中代码注释,多行注释,再按取消注释

Alt+Shift+上下箭头

移动当前代码行

第二章.键盘录入_Scanner

1.概述:Java自带的一个类
2.作用:通过键盘录入的形式,将数据放到程序中参与运行
3.怎么使用:
a.导包: import java.util.Scanner -> 为了找到我们要用得Scanner
b.创建对象: Scanner 名字 = new Scanner(System.in)
c.调用方法,真正实现键盘录入: 名字.方法名()

nextInt()->键盘录入一个整数(int)
nextDouble() -> 键盘录入一个小数(double)
next()->键盘录入字符串
Scanner 中的next()和nextLine()区别:
next() 遇到空格就结束了
nextLine()遇到回车才结束录入

第三章.switch(选择语句)

1.switch基本使用
1.格式:
  switch(变量){
      case 目标值1:
          执行语句1;
          break;
      case 目标值2:
          执行语句2;
          break;
      case 目标值3:
          执行语句3;
          break;
      ...
      default:
          执行语句n;
          break;
  }
2.switch中能写什么类型的数据:
  byte short int char 枚举类型(jdk5是新增),String类型(jdk7新增)
2.case的穿透性
1.什么时候会发生case的穿透性:
switch中没有break时
2.如果没有break,case会一直往下穿透执行,直到遇到了break或者switch代码结束了
3.default放在哪里都是最后一个比较。

第四章.分支语句

1.格式:
  if(boolean表达式){
      执行语句1
  }else if(boolean表达式){
      执行语句2
  }else if(boolean表达式){
      执行语句3
  }...else{
      执行语句n    
  }

Day04.循环_数组

第一章.循环语句

1.for循环
1.格式:
  for(初始化变量;比较;步进表达式){
      循环语句
  }
2.while循环
1.格式:
  初始化变量
  while(比较){
      循环语句
      步进表达式
  }
3.do……while循环
1.格式
  初始化变量;
  do{
    循环语句
    步进表达式
  }while(比较);
2.特点:
  至少循环一次
4.循环的区别
1.for循环:在for循环中的初始化变量,外面使用不了,随着for循环的结束而失去作用

2.while:初始化的变量不会随着循环的结束而失去作用

3.do...while:初始化的变量不会随着循环的结束而失去作用,至少执行一次

4.确定次数推荐用for,不确定次数推荐用while
5循环控制关键字
(1).break
a.在switch中,代表结束switch语句
b.在循环中,直接结束循环
(2).continue
a.结束本次循环,进行下一次循环

第三章.Random随机数

1.概述:Random也是Java提前定义好的类
2.作用:可以在指定的范围内随机一个数
3.使用:
a.导包:import java.util.Random
b.创建对象: Random 对象名 = new Random()
c.调用方法: 对象名.方法名
nextInt():在int的取值范围内随机一个数
nextDouble():在0.0到1.0之间随机一个小数

4.在指定范围内随机一个数
nextInt(int n) : 从0-(n-1)之间随机一个数

nextInt(10) : 在0-9之间随机一个数
nextInt(100): zai 0-99之间随机一个数

第四章.数组的介绍以及定义

3.特点:
a.数组可以存储基本数据类型,还可以存储引用数据类型
b.定长(数组定义的时候规定多长,后续不能改变)
3.定义:
动态初始化:
a.数据类型[] 数组名 = new 数据类型[数组的长度]->推荐
int [] x =new int [3]
c.动态初始化每一部分是啥意思:
数据类型:规定数组中能存什么类型的数据
[]:代表的是数组,一维数组
数组名:见名知意
new:代表的是将数组创建出来
数据类型:要和等号前面的数据类型保持一致
[数组的长度]:数组的最大容量,规定数组最多能存多少个数据

静态初始化:
简化形式: 数据类型[] 数组名 = {元素1,元素2,元素3...}->推荐

4.动态初始化和静态初始化的区别:
动态初始化:创建的时候只给了长度,但是没有往里面存我们想要存的元素
静态初始化:创建的时候就直接往里存了我们想要存的元素,根据存的元素个数可以推算出来数组的长度

5.动态初始化和静态初始化的使用时机:看时机
动态初始化:当我们定义的时候只知道元素的类型和个数,但是不知道要存什么元素
静态初始化:当我们定义的时候已经知道了存什么元素了,就可以用静态初始化了

第五章.操作数组

1.获取数组的长度
格式:
数组名.length
2.length不是方法,只是数组的一个属性,仅此而已
3..格式:
数组名[索引值] = 元素值 -> 将等号右边的元素中,存储到等号左边数组指定的索引位置上
比如: arr[0] = 100 ->将100存储到了数组arr的0索引上
4.获取元素
格式:
数组名[索引值]
注意:
如果我们数组中没有存储我们想要存储的元素,数组中的元素就都是默认值
数组中的元素是有默认值的

整数 : 0
小数 : 0.0
字符 : '\u0000'
布尔 : false
引用 : null

第六章.操作数组时两个常见的问题

1.数组索引越界异常-> ArrayIndexOutOfBoundsException

出现的原因:

操作的索引超出了数组的索引范围

2.空指针异常-> NullPointerException

出现的原因:

当一个引用类型的数据为null,然后还在继续操作

Day05.二维数组,方法

1.1二维数组的定义格式

1.概述:数组中套着多个一维数组
2.定义:
动态初始化:
数据类型[][] 数组名 = new 数据类型[m][n];--> 推荐
数据类型 数组名[][] = new 数据类型[m][n];-->不推荐
数据类型[] 数组名[] = new 数据类型[m][n];-->不推荐

m:代表的是二维数组的长度(二维数组中最多能有多少个一维数组)
n:代表的是每一个一维数组的长度


int[][] arr2 = new int[3][]; //代表每一个一维数组没有真正创建出来 所以每一个一维数组都是null

静态初始化:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}}
简化:数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}}

1.2方法的使用

1.方法的概述:方法就是功能,将来开发一个功能就需要定义一个方法
2.好处:好处大大的(可维护性高,复用性高)
3.方法的定义(通用的格式)
修饰符 返回值类型 方法名(参数列表){
方法体;
return 结果;
}

无参无返回值方法->最简单
有参无返回值方法
无参有返回值方法
有参有返回值方法

4.无参无返回值方法定义格式:
public static void 方法名(){
方法体
}
调用方式:在其他方法中:方法名();
5.注意:
a.void代表没有返回值,有了void 方法体中不用写return 结果
b.方法之间是平级关系,不能互相嵌套
c.方法不调用不执行的
d.方法的执行顺序只和调用顺序有关
e.main方法是jvm自动调用

1.3形式参数和实际参数区别

形式参数(形参):在定义方法的时候形式上定义的参数,没有给具体值
实际参数(实参):在调用方法的时候给参数赋予的具体的值

Day06.方法的重载_面向对象

第一章.方法的重载

1.概述:
方法名相同,参数列表不同的方法
2.什么是参数列表不同呢?
a.参数个数不同
b.参数的数据类型不同
c.参数数据类型的位置不同

3.判断两个方法是否为重载方法,不用看哪里(和什么无关)
a.和参数名字无关
b.和返回值类型无关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值