一,基础部分

1.1dos命令(也就是cmd命令)

exit退出当前dos命令窗口

cls清屏

在dos中复制:直接复制

dir:显示子文件

cd改变目录,切换盘符的直接输入盘符不用cd,不可以跨盘符使用cd命令

可以使用相对路径和绝对路径

cd ..返回上级目录

cd \返回根目录

1.2 java语言特性

  1. 简单性:java不支持多继承,没有指针;相对来说c++有多继承和指针;java底层使用c++
  2. 面向对象性:纯面向对象,更好理解
  3. 可移植性:一次编译,到处运行;在windows上运行的不修改可以直接在linux上使用                               但是两种操作系统的内核运行原理完全不一样,所以java运行在一台虚拟的计算                     机中,  也就是JVM,虚拟机再和低层打交道
  4. 多线程性
  5. 健壮性:自动垃圾回收机制(CG)
  6. 安全性

1.3 java的加载与执行

java程序运行包括两个非常总要的阶段:编译阶段和运行阶段

编译阶段:主要任务是检查java源程序是否符合java语法,符合就生成字节码文件(xxxx.class)

字节码不是纯粹的二进制,无法在系统中直接执行

java程序员需要使用jdk中自带的javac.exe命令进行java程序的编译,然后class文件进入类加载器,JVM,操作系统

java源文件生成一个class文件用来最终执行,删除源文件并不影响程序的执行,但是这样就不可以修改了

运行阶段:使用java.exe,用法 java a(a.class)。打开cmd输入java a然后会启动Jvm,会加载类加载器,然后搜索a.class,装载到jvm编译成二进制与操作系统交互

ps:在cmd中执行外部命令,首先搜索当前目录,然后找环境变量,所以安装了配置环境变量才可以使用cmd访问

1.4 java基础类知识

一个java文件中只可以有一个public class a{}文件,但是可以有多个class a{}的文件,不加public

标识符:程序员自己命名的东西,类名,接口,变量等(数字,字母,下划线,美元符号组成)

规范:准守驼峰命令UserNameSelect

字面值:就是数据,字面上的值,不是表达式

面向对象和面向过程的区别

--面向过程:主要关注点是具体的实现过程,因果关系(集成显卡的开发)

*优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期的投入成本比较低。

*缺点:采用面向过程的方式开发很难解决非常复杂的的业务逻辑,软件元素之间的耦合度会非常高,只要其中一环出现问题,整个系统就很容易蹦。这样软件的拓展能力就会很差,无法达到组件的复用,会产生很多冗余代码

--面向对象:主要关注对象这个独立体能完成那些功能(独立显卡的开发)

*优点:耦合度低,拓展能力强。更容易解决复杂的问题,代码的复用率更高,在复杂的程序中可以节省很多冗余的代码。

*缺点:前期的投入比较大,需要构建各种的独立体。大量的系统分析和设计

----c语言是纯面向过程的,c++半面向对象,java纯面向对象

1.5关键字

final关键字

1.final是一个关键字表示最终的,不可变的

2.final修饰的类无法被继承

3.final修饰的方法无法 被覆盖

4.final修饰的变量一但赋值之后无法修改

5.final修饰的实例变量必须手动赋值(实例变量就是类里面的 private int a这种)

6.final修饰的引用一但赋值无法指向其他对象地址,但是可以修改对象内部的数据。

并且无法被垃圾回收机制回收

7.final和static联合使用的时候用来定义常量

访问控制权限修饰符

public 表示任何位置都可以访问

protected  同一个包,或者其他包继承该类也可以访问

缺省(int a)同一个包可以使用

private 只有这个类里面可以使用,一般创建的时候必须加上get,set方法才可以操作

static关键字

使用static关键字可以定义静态代码块“”

static{java代码} 

静态代码块在类加载的时候执行,并且只执行一次,可以定义多个静态代码块

静态方法:

static定义为静态方法的时候可以直接通过类来调用该方法,不用先new一个对象,例如程序的入口函数就是一个静态的方法,如果是非静态的实例方法调用的时候就需要先new一个对象才可以调用

方法被定义为静态的时候,描述的就是动作了,当所有对象执行这个动作的时候,最终产生的影响是一样的,那么可以将该方法提升为类级别的动作,也就是静态方法的使用。(直接通过类调用,工具类大多是静态方法,不用new对象)

静态变量:

代码中对象还没有创建的时候,如果加载了类,static修饰的属性已经存在了,和对象没有关系

也就是说如果某个类的某个属性已经固定了,可以声明为静态变量,同样是通过类名来直接定义,将该属性存到类加载里面,和new对象无关

abstract关键字

什么是抽象类?

类和类之间具有的共同特征,将这些共同特征提取出来就是抽象类。

抽象类无法创建对象(同时接口也无法创建对象)

抽象类也属于引用类型

abstract class a{}

抽象类有构造方法,用来提供给子类使用

抽象类之间的共同特征还可以继续提取形成新的抽象类

抽象类中可以有抽象方法和普通方法,但是抽象方法只能在抽象类中

抽象方法没有方法体

一个非抽象类继承抽象类必须重写抽象方法

接口的基础语法

接口是一种引用数据

接口是完全抽象的

接口支持多继承

接口中只有常量和抽象方法

接口中的所有方法都是用public修饰的

接口中的方法都是抽象的,但是可以省略public abstract

接口中的常量的public static final可以省略

一个非抽象的类实现接口的时候必须重写里面的所有抽象方法

一个类可以实现多个接口,需要重写所有的方法

一个类可以同时继承和实现接口 class a extends b impement c

使用接口写代码的时候可以将接口当成父类来执行多态。

抽象类和接口的区别

抽象类时半抽象的,接口是完全抽象的

抽象类之间只能单继承,接口之间可以多继承

抽象类中有构造方法,接口中没有

一个类可以实现多个接口,但是只可以继承一个类

final和finally和finalize()区别

final是最终的关键字

finally是用来处理异常try

finalize()方法只有一个方法体,里面没有代码。使用protected修饰的,jvm垃圾回收机制回收垃圾之前执行该方法

2.1数据类型

数组

数组的优点和缺点

在空间存储上,数组是连续的

每个元素所占的空间都是等额大小的

知道首字母的内存地址就可以推出偏移量

优点:检索效率高,

缺点:增删改查不方便,数组无法存储较大的数据(类似于链表和顺序表)

一维数组的使用 int[] a={1,2}     int []   a=new int[10]

psvm入口函数中有一个String【】 args,其实是一个可以传递的参数,如果赋值会直接打印到控制台,可以在idea里设置值。

数组的拷贝:使用System.arraycope(数组,偏移量(1从第二个开始),目标数组,偏移量,个数)

int a={1,11,22,33,44}           int b=new int[20]      System.arraycope(a,1,b,3,2) //0,0,0,11,22......

常见的算法

冒泡排序法:本质上就是将最大或者最小的数通过一次次交换到最右边(有点像冒泡泡)

选择排序法:将最大或者最小的数字选择出来在交换

二分查找法:

调用函数完成二分查找,首先使用Array.sort()对集合排序

然后使用Array.binarySearch(arr,5)来查找5的索引

2.2    String

概述

String定义的是一个引用类型,里面存放的是字符串常量的地址,创建一个String字符串变量,就是将该值存放到方法区的字符串常量中,然后该变量会存放常量的地址。也就是说,如果创建两个对象等于同一个值,就是指向同一个地址,使用==会返回true

使用new对象创建两个不同的变量的时候,会在堆内存创建两个不同的对象里面存放着同一个常量地址,但是这两个变量指向的对象不一致,所以使用==返回false

构造方法

String s=new String("");

String s="";

String s=new String(char数组)

String s=new String(char数组,起始下标,长度)

String s=new String(byte数组)

String s=new String(byte数组,起始下标,长度)

常见方法

用于查找字符串第一位

"字符串".charAt(1);   //符

用于比较大小,括号的和引用的比较

"abc".compareTo("abc") ; //0

"abc".compareTo("abd") ; //-1

"abc".compareTo("aba") ; //1

用于判断前面字符串是否包含后面的

"http://baidu.com".contains(".com"); //true

用于判断字符串是否以某个字符结尾

"http://baidu.com".endwith(".com"); //true

equals比较是否相等

"Abc".equalsTgnargcase("abc")比较是否相等并且忽略大小写

"dsahjkabc".indexof("abc")用于找出abc第一次出现的索引

"dsahjkabc".lastof("abc")用于找出abc最后一次出现的索引

s.isEmpty()判断是否为空

"abc".length()长度

"abc".replace("a","b");    //bbc替换

"http://baidu.com".strartWith("http"); //true        判断以http开头

"http://baidu.com".substring(2,4);     //tp        从2到四

StringBuffer

由于声明的每一个字符串都需要在方法区存放一个常量,所以如果需要字符串的拼接会导致很多的常量存放到方法区。所以需要定义一个字符串缓冲来对拼接字符串操作

完成该过程也可以使用StringBuilder

StringBuffer中的方法都有SYNCHRONIZED关键字修饰,表示该类在多线程环境下运行是安全的

StringBuilder中没有该关键字,是线程不安全的

为什么这两种方式可以实现字符串的拼接

因为这两个类中存放了一个byte[]数组,初始化的容量一般是16,当存满了之后会自动扩容,底层调用了数组的拷贝方法

八中非基本数据类型都是引用的形式:

因为基本数据类型并不够用,而且很多方法中接收的参数是Object类,这样无法使用基本数据类型

在定义Integer  a=  128的时候java会对int 128自动装箱处理。

此时有一个程序

Integer  a=  128

Integer  b=  128

sout(a==b);//false   因为引用变量指向的是对象存放的地址,所以并不相同

Integer  a=  127

Integer  b=  127

sout(a==b);true  因为java会将数字-128到127存放到方法区的整数常量池中,所以这两个对象定义出来之后会指向该常量,所以相等

java基础_笔记(dos,java基础信息,final,static,abstract,接口,抽象类,数组,排序string,stringbuff/stringbuilder)相关推荐

  1. 【微信_小游戏_canvas_基础_笔记1】

    微信_小游戏_canvas_基础_笔记1 game.js文件 s_1.js文件 你好! 这是我第一次使用 Markdown编辑器 所展示的欢迎页. 第一次分享学习经历. 学习的是 joke_shi 教 ...

  2. java 抛出异常_我的Java Web之路51 - Java异常基础

    本系列文章旨在记录和总结自己在Java Web开发之路上的知识点.经验.问题和思考,希望能帮助更多(Java)码农和想成为(Java)码农的人. 目录 介绍 异常的本质 Java异常的设计 Java异 ...

  3. Java编程基础阶段笔记 day04 Java基础语法(下)

    ​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个 ...

  4. java编程基础笔记_Java编程基础阶段笔记 day01 Java语言概述

    常用的DOS命令 dir :    列出当前目录下的文件以及文件夹 md :   创建目录 rd :     删除目录 cd :    进入指定目录 cd.. :  退回到上一级目录 cd\:     ...

  5. 达内java作业_【达内JAVA教程】达内Java基础题

    原标题:[达内JAVA教程]达内Java基础题 [达内JAVA教程]达内Java基础题.的小编收集了四道JAVA基础题,下面快来跟随的小编来了解一下吧! 话说很多java程序员学过一段时间后,都应该找 ...

  6. 马士兵java面向对象_马士兵JAVA零基础后端工程师

    马士兵JAVA零基础后端工程师 简介 Java的应用可以说是无处不在,从桌面办公应用到网络数据库等应用,从PC到嵌入式移动平台,从Java小应用程序(Applet)到架构庞大的J2EE企业级解决方案, ...

  7. JavaScript基础语法笔记,ECMAScript基础,每部分都有经典案例以及解析。会持续更新(2022.0310)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.JavaScript导读 1.1 什么是JavaScript(这里借鉴Js红宝书的内容,看一看就可以了) 1.2 ...

  8. 《深入理解java虚拟机》笔记1——Java内存区域与Java对象

    运行时数据区域 JVM载执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程 ...

  9. java序列化_技术干货 | JAVA反序列化漏洞

    目录 反序列化漏洞 序列化和反序列化 JAVA WEB中的序列化和反序列化 对象序列化和反序列范例 JAVA中执行系统命令 重写readObject()方法 Apache Commons Collec ...

最新文章

  1. 求n!中含有质因子p的个数
  2. C 语言编程 — 程序的装载与运行
  3. 能被选为2021最佳开源项目的WEB框架究竟有多棒?
  4. zcmu1209(dfs)
  5. html 字符串最后加空格,html space空格符
  6. 机器学习 综合评价_PyCaret:机器学习综合
  7. Linux的学习笔记~
  8. obs中音频和视频的同步
  9. 工大瑞普 NP-OSPF综合实验
  10. SSM系类代码:org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer
  11. c语言去尾法和进一法的例子,进一法或去尾法在生活中的应用教学案例.doc
  12. 【图像处理】PS曲线工具matlab实现 交互自定义灰度映射(Gray Level Transformation)附代码链接
  13. 程序猿头头:数组应用(indexOf,includes,find,findindex)
  14. Apostrophe not preceded by \
  15. 如何在 Unity 中使用 Probuilder 设计一个简单的关卡
  16. 手机如何取消安全模式
  17. 中职计算机专业优质课公开课,如何上中职计算机公开课.pdf
  18. vivo统一告警平台设计与实践
  19. 华附计算机学神,【学习】时隔13年,华附两牛娃杀进奥数国家队,父母亲述学霸成长史!...
  20. flask专题-小说网站开发二(抓取数据)

热门文章

  1. 负载均衡实现,一个域名对应多个IP地址【转】
  2. 计算机演示文稿的使用步骤,将编辑好的演示文稿在其他计算机放映用什么功能...
  3. 在<selectKey></selectKey>标签中使用多个sql语句时报错;Error selecting key or setting result to parameter object. C
  4. 用一个网页展示项目成果
  5. 昨晚凌晨1点58分,产品1.0版本上线了
  6. url、src、herf的区别
  7. 【Home键的监听】
  8. NKOJ 3652 shallot (线性基+CDQ分治)
  9. MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂
  10. 深入理解APP的缓存原理机制