首页 > 其他分享 >第四次博客

第四次博客

时间:2023-01-09 21:14:13浏览次数:24  
标签:语句 调用 博客 数组 类型 方法 表达式 第四次

第四次博客

一、JAVA基础

1、注释,标识符,关键字

1、注释

  • 平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,复杂起来我们就需要用到注释

  • 注释并不会被执行,是给我们写代码的人看的 BAT

  • 书写注释是一个非常好的习惯

JAVA中的注释有三种

单行注释

//开头,写在//后面,是写给人看的

多行注释

/* 注释 */,在中间写注释,又叫块注释,注释一段注释

Ctrl+Shift+/ 多行注释快捷键

文档注释

//JavaDoc:文档注释

/*

*/

每个开头都需要*号

2、 标识符、关键字

JAVA所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符

  • 所有标识符都应该以字母(A-Z或者a-z),美元符号($),或者下划线(__)开始

  • 首字符之后字母(A-Z或者a-z),美元符号($),或者下划线(__)或数字的任何字符组成

  • 不能使用关键字作为变量名或方法名

  • 标识符是大小写敏感的

  • 合法标识符距离:age,$salary,value,__1_value

  • 非法标识符举例:123abc,-salary、#abc

  • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音

关键字:

![](file://C:\Users\asus\Desktop\临时\屏幕截图%202022-10-23%20132345.png?msec=1673268769707)

2,数据类型

强类型语言

要求变更量的使用要严格符合规定,所有变量都必须先定义后才能使用

弱类型语言

要求变更量的使用不一定要严格符合规定,所有变量都必须先定义后才能使用

基本类型

数值类型
整数类型

byte -128~127

short -32768~32767

int -2147483648~2174483647

long -9223372036854775808~9223372036854775807

定义long类型时,数字后加L

整数拓展

二进制0b

十进制

八进制0

十六进制0x 09 AF 16

浮点类型

float 占4个字节

定义float类型时,数字后加F

double 占8个字节

浮点数拓展

银行业务怎么表示?

//float 有限 离散 舍入误差 结果是一个大约数,接近但不等于

//double

最好完全避免使用浮点数进行比较

字符类型

char 占2个字节 定义值加 ’ ‘

字符拓展

当输出标识符前加int,进行强制转换

编码 Unicode 2字节 65536

转义字符

\t 制表符

\n 换行

boolean类型

占1位,其值只有true和false两个

//八大基本数据类型

//整数
int num1 = 10;//最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L;//Long类型要在数字后面加个L

//小数:浮点数
float num5 = 50.1F;//float类型要在数字后面加个F
double num6 = 3.141592653589793238462643;

//字符
char name = '国';
//字符串,String不是关键字,类
//String namea = ‘秦疆’;

//布尔值
boolean flag = true;
//boolean flag = false;

引用类型

接口

数组

什么是字节

位(bite):是计算机内部数据储存的最小单位,11001100是一个八位二进制

字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示

1B(byte,字节)= 8bit(位)

字符:是指计算机中使用的字母,数字,字和符号

1bit表示1位

1Byte表示一个字节 1B=8b

1024B=1KB

1024B=1M

1024M=1G

3,类型转换

进行类型转化时由低到高

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

不同类型的数据先转化成同一类型,再进行运算

强制转换

(类型)变量名 高到低

自动转换

低到高自己转换

1.不能对布尔值进行转换

2.不能把对象类型转换为不相干的类型

3.在把高容量转换到低容量的时候,强制转换

4.转换的时候可能出现内存溢出,或者精度问题

定义一个较大的数字是应先将数转换为long

4,变量,常量

type varName [= value];

作用域:

类变量

实例变量

局部变量

常量 final MAX A = 10;

命名规范:

1.见名知意

2.驼峰命名(变量,方法)

3.类,首字母大写,驼峰命名

4.常量:大写+下划线

5.不要用拼音命名

5,运算符

算术运算符:+ - * / % ++ --

赋值运算符:=

关系运算符:> < >= <= == != instanceof(编译时类类型要么与后面类相同,要么与后面类具有父子继承关系)

逻辑运算符:&&与 ||或 !非

位运算符:& | ^ ~ >> << >>>

条件运算符:? :

扩展运算符 + = - = *= /=

6,包机制,JavaDoc

域名倒写

package

import

防止命名冲突

JDK帮助文档 javadoc:

@author:作者

@Version:版本

@since:支持的最早版本

@param:参数

@return:返回的值

@throws:抛出的异常

二、JAVA流程控制

1,用户交互Scanner

Java.util.Scanner 获取用户的输入

基本语法:

Public static void main(String [] args){
    Scanner scanner = new Scanner(System.in);
    System.out.println("使用nextLine方式接受");  

    if (scanner.hasNextLine()){  
        String str = scanner.nextLine();  
        System.out.println("输入的内容为:"+str);  
}  
    scanner.close();
}

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据

next()

  • 1.一定要读取到有效字符后才可以结束输出

  • 2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉

  • 3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

  • 4.next()不能得到带有空格的字符串

nextLine():

1.以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

2.可以获得空白

建立一个Scanner类后,最后需要加上scanner.close();语句,不然scanner会一直执行

2,顺序结构

JAVA的基本结构就是顺序结构,除非特别指明,否则按照顺序一句一句执行

顺序结构是最简单的算法结构

语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

3,选择结构

if单选择结构

判断一个东西是否可行,然后我们采取执行

if(布尔表达式){
    //如果布尔表达式为true将执行的语句
}

if双选择结构

if(){
    //如果布尔表达式的值为true
}else{
    //如果布尔表达式的值为flase
}

语句T或F都有对应的语句

if多选择结构

存在很多判断

if(布尔表达式1){
    //如果布尔表达式1的值为true执行代码
}else if(布尔表达式2){
    //如果布尔表达式2的值为ture执行代码
}else if(布尔表达式3){
    //如果布尔表达式3的值为true执行代码
}else{
    //如果以上布尔表达式都不为true执行代码
}

嵌套的if结构

if(布尔表达式1){
    ////如果布尔表达式1的值为true执行代码
    if(布尔表达式2){
    ////如果布尔表达式2的值为true执行代码
}
}

switch多选择结构

switch case 语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

switch(expression){
    case value:
    //语句
    break;//可选 
    case value:
    break;//可选
    //你可以有任何数量的case语句
    default://可选
    //语句
}

swtich 语句中的变量类型可以是:

byte,short,int或者char

switch支持字符串String类型

同时Case标签必须为字符串常量或字面量

case后必须加break结束该程序段

4,循环结构

while循环

while(布尔表达式){
    //循环内容
}

只要布尔表达式为true,循环就会一直进行下去

我们大多数时候是会让循环停下来的,我们需要一个让表达式失效的方式让循环结束

do...while循环

对于while语句而言,不满足条件就不进入循环,但是有时候我们需要及时补镜如循环,也要至少执行一次

do...whlie与while类似,但是do...while至少执行一次循环

do{
    //代码语句
}while(布尔表达式)

while先判断再执行,do...while先执行再循环

for循环

是一种支持迭代的一种通用结构,最有效,最灵活的循环结构

执行的次数是在执行前就确定的

for(初始化;布尔表达式;更新){
    //代码语句
}

100.fori 快捷生成 for(int i = o ;i < 100;i++){ }

在java5中引入了一种主要用于数组的增强型for循环

System.out.print("\n")或 System.out.print() 换行

System.out.print("\t") 换行

break 用于强制退出循环

continue 用于终止某次循环

5,break&continue

break:跳出循环

continue:终止当次循环

带标签continue

return:结束方法的运行

三、 JAVA方法详解

1,何谓方法

  • System.out.println(),那么它是什么呢?

  • JAVA是语句的集合,它们在一起执行一个功能

方法是解决一类问题的不走的有序组合

方法包含于类或对象中

方法在程序中被创建,在其他地方被引用

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

2,方法的定义及调用

  • JAVA的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:

方法包含一个方法头和一个方法体。下面是一个方法的所有部分

修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型

返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。

方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

形式参数:在方法被调用是用于接收外界输入的数据

实参:调用方法时实际传给方法的类型

方法体:方法体包含具体的语句,定义该方法的功能

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}
  • 调用方法:对象名.方法名(实参列表)

当方法返回一个值的时候,方法调用通常被当作一个值。

int larger = max(30,40);

当方法返回值是void(空),方法调用一定是一条语句。

System.out.println("hello,kuangshen!");

3,方法重载

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

方法的重载规则:

方法名称必须相同

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

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

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

  • 实现理论:

方法名称相同时,编译器会根据调用方法的参数个数,参数类型等逐个匹配

,以选择对应的方法,如果匹配失败,则编译器报错

4,命令行传参

5,可变参数

可以传很多个参数

java支持传递同类型的可变参数给一个方法

在指定参数类型后加一个省略号(...)

一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在他之前声明

6,递归

A方法调用B方法

递归就是:A方法调用A方法,就是自己调用自己

递归结构包括两个部分:

递归头:什么时候不调用自身方法。如果没有头,将陷入死循环

递归体:什么时候需要调用自身方法

递归太多占用内存太大

四、数组

1,数组概括

数组的定义:

数组是相同类型数据的有序集合

数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成

其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们

2,数组声明创建

  • 收i按必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dateType[] arrayRefVar;  //首选的方法
或
dateType arrayRefVar[];  //效果相同,但不是首选方法
  • JAVA语言使用new操作符来创建数组,语法如下:
dateType[] arrayRefVar = new dateType[arraySize];
  • 数组的元素是通过索引访问,数组索引从0开始。

  • 获取数组长度:arrays.length

3,数组使用

For-Each循环

增强型for循环:arrays.for

4,多维数组

可以看作是数组的数组,比如二维数组就是一个特殊的数组,其每个元素都是一个一维数组

二维数组:

int a[][] = new int[2][5];

5,Arrays类

数组的工具类java.util.Arrays

由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作

查看JDK帮助文档

Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而”不用”使用对象来调用(主义:是“不用”而不是“不能”)

具有以下常见功能:

给数组赋值:通过fill方法

对数组排列:通过sort方法,按升序

比较数组:通过equals方法比较数组中元素值是否相等

查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作

6,稀疏数组

当一个数组中大部分元素为0;或者为同一个值的数组时,可以使用稀疏数组来保存该数组

稀疏数组的处理方式是:

记录数组一共有几行几列,有多少个不同值

把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

7,内存分析

堆:

存放new的对象和数组

可以被所有的线程共享,不会存放别的对象引用

栈:

存放基本变量类型(会包含这个基本类型的具体数据)

应用对象的变量(会存放这个引用在堆里面的具体地址)

方法区:

可以被所有的线程共享

包含了所有的class和static变量

五、面向对象

1,面向过程&面向对象

  • 面向过程

步骤清晰简单,第一步做什么,第二步做什么...

面对过程是和处理一些较为简单的问题

  • 面对对象思想

物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。

面向对象是和处理复杂的问题,适合处理需要多人协作的问题!

  • 对于描述复杂的事物,对于从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是,具体到宏观操作,仍然需要面向过程的思路去处理。

2,什么是面向对象

面向对象编程(Object-Oriented Programming,oop)

面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)的数据。

抽象

三大特性:

  • 封装

  • 继承

  • 多态

从认识论角度考虑是先对象后有类。对象,是具体的事物,类,是抽象的,是对对象的抽象

从代码运行角度考虑是先有类后有对象。类是对象的模板。

3.回顾方法及加深

  • 方法的定义

修饰符

返回类型

break和return的区别

方法名

参数列表

异常抛出

  • 方法的调用

静态方法

非静态方法

形参和实参

值传递和引用传递

this关键字

4,类与对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义。但是并不能代表某一个具体的事物

动物、植物、手机、电脑... ...

Person类,Pet类,Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为

  • 对象是抽象概念的具体实例

张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例

能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念

5,创建与初始化对象

  • 使用new关键字创建对象

  • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象,进行默认的初始化以及对类中构造器的调用。

  • 类中的构造器也成为构造方法,是在进行创建对象的时候必须调用。并且构造器有以下两个特点:

1,必须和类的名字相同

2,必须没有返回类型,也不能写void

构造器必须掌握

6,封装

  • 该露的露,该藏得藏

我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。

  • 封装(数据的隐藏)

通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这成为信息隐藏。

记住这句话就够了:属性私有,get/set

7,继承

继承的本质是对某一批类的抽象,从未实现对现实世界更好的建模。

extands的意思是“扩展”。子类是父类的扩展。

JAVA中类至于单继承,没有对继承!

继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。

继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extands来表示。

子类和父类之间,从意义上讲应该具有比“is a”的关系。

object类

this - super

方法重写 --> 多态

8,多态

即同一方法可以根据发送对象的不同而采用多种不同的行为方式。

一个对象的实际类型是确定的,但可以指向对象的应用的类型有很多(父类,有关系的类)

多态存在的条件

有继承关系

子类复写父类方式

父类引用指向子类对象

注意:多态是方法的多态,属性没有多态。

instanceof (类型转换) 引用类型

9,抽象类

abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。

抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。

抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。

抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。

子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。

10,接口

普通类:只有具体实现

抽象类:具体实现和规范(抽象方法)都有!

接口:只有规范!

接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能...”的思想,如果你是天使,则必须能飞。如果你是汽车,则必须能跑,如果你好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。

接口的本质是契约,就像我们人间的法律一样,制定好后大家都遵守。

OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是应为设计模式所研究的,实际上就是如果合理的去抽象。

11,内部类

内部类就是一个类的内部再定义一个类,比如A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类就是外部类

1,成员内部类

2,静态内部类

3,局部内部类

4,匿名内部类

标签:语句,调用,博客,数组,类型,方法,表达式,第四次
From: https://www.cnblogs.com/Ykun11/p/17038522.html

相关文章

  • 使用博客园图床作为公众号中转
    使用博客园图床作为公众号中转前言在比较了飞书云文档、语雀、金山文档和Notion后,我决定使用Notion作为笔记软件,最大的原因就是可以用教育邮箱获得PersonalPro资格,不花......
  • 博客目录
    1.个人简介1.1个人简介2.好题整理2.1好题整理12.2好题整理23.比赛题解3.1CodeforcesRound#592(Div.2)vp记(CF1244)3.2EducationalCodeforcesRound139......
  • 我的基于 JamStack 的新博客
    概述今天心血来潮,介绍一下我的新博客站点——https://EWhisper.cn。我是做基础平台PaaS运维和架构的,挺喜欢把工作中学到的新知识写下来、记笔记,突然有一天就抱着「资......
  • django_博客练习(文章详情/点赞/评论)
    文章详情页渲染文章内容侧边栏有分类显示通过设置路由的方式传递参数文章id作者用户名文章是通过文章对象渲染到前端的,所以你点击文章时也可以告诉后端你点击的是哪......
  • 测试博客
    标题一标题二标题三标题四标题五标题六这是引用这时列表列表无须列表无须列表这厮链接加粗代码code复选框body{margin:22px;padding:30px;}......
  • sql 注入_商洛学院司徒荆_新浪博客
    一、sql注入:猜解数据库shiyan:~/$wgethttp://labfile.oss.aliyuncs.com/courses/876/dvwa.tar.gzshiyan:~/$tar-zxvfdvwa.tar.gzshiyan:~/$cddvwashiyan:~/$su......
  • kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载_商洛学院司徒荆_新浪博客
         VMWare下的配置下的配置首先我要说的是,wifi密码的破解不是想象中的那么容易,目前还没有一个可以破解任意类型wifi密码的工具或者方案存在。虽然你可以在网络上找......
  • 【优化博客】使用Lazysizes.js使你的博客图片懒加载(延迟加载)
    懒加载是什么?懒加载(LoadOnDemand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最......
  • 浪海博客系统
    浪海博客,一个基于SpirngBoot快速构建的单体架构项目,部署简单方便,适用于个人博客系统搭建。可以用来快速搭建个人博客系统。 gitee地址:https://gitee.com/langhai666/lan......
  • 博客食用指南
    说明:1.由于一些洛谷中的题目在其他网站没有,然后这只小蒟蒻又不想插入代码,所以就把“Code”链接指向我在洛谷中的提交记录,大家肯定都看不到,所以如果真的需要欣(chao)赏(fe......