java基础_笔记(dos,java基础信息,final,static,abstract,接口,抽象类,数组,排序string,stringbuff/stringbuilder)
一,基础部分
1.1dos命令(也就是cmd命令)
exit退出当前dos命令窗口
cls清屏
在dos中复制:直接复制
dir:显示子文件
cd改变目录,切换盘符的直接输入盘符不用cd,不可以跨盘符使用cd命令
可以使用相对路径和绝对路径
cd ..返回上级目录
cd \返回根目录
1.2 java语言特性
- 简单性:java不支持多继承,没有指针;相对来说c++有多继承和指针;java底层使用c++
- 面向对象性:纯面向对象,更好理解
- 可移植性:一次编译,到处运行;在windows上运行的不修改可以直接在linux上使用 但是两种操作系统的内核运行原理完全不一样,所以java运行在一台虚拟的计算 机中, 也就是JVM,虚拟机再和低层打交道
- 多线程性
- 健壮性:自动垃圾回收机制(CG)
- 安全性
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)相关推荐
- 【微信_小游戏_canvas_基础_笔记1】
微信_小游戏_canvas_基础_笔记1 game.js文件 s_1.js文件 你好! 这是我第一次使用 Markdown编辑器 所展示的欢迎页. 第一次分享学习经历. 学习的是 joke_shi 教 ...
- java 抛出异常_我的Java Web之路51 - Java异常基础
本系列文章旨在记录和总结自己在Java Web开发之路上的知识点.经验.问题和思考,希望能帮助更多(Java)码农和想成为(Java)码农的人. 目录 介绍 异常的本质 Java异常的设计 Java异 ...
- Java编程基础阶段笔记 day04 Java基础语法(下)
面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个 ...
- java编程基础笔记_Java编程基础阶段笔记 day01 Java语言概述
常用的DOS命令 dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 cd : 进入指定目录 cd.. : 退回到上一级目录 cd\: ...
- 达内java作业_【达内JAVA教程】达内Java基础题
原标题:[达内JAVA教程]达内Java基础题 [达内JAVA教程]达内Java基础题.的小编收集了四道JAVA基础题,下面快来跟随的小编来了解一下吧! 话说很多java程序员学过一段时间后,都应该找 ...
- 马士兵java面向对象_马士兵JAVA零基础后端工程师
马士兵JAVA零基础后端工程师 简介 Java的应用可以说是无处不在,从桌面办公应用到网络数据库等应用,从PC到嵌入式移动平台,从Java小应用程序(Applet)到架构庞大的J2EE企业级解决方案, ...
- JavaScript基础语法笔记,ECMAScript基础,每部分都有经典案例以及解析。会持续更新(2022.0310)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.JavaScript导读 1.1 什么是JavaScript(这里借鉴Js红宝书的内容,看一看就可以了) 1.2 ...
- 《深入理解java虚拟机》笔记1——Java内存区域与Java对象
运行时数据区域 JVM载执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程 ...
- java序列化_技术干货 | JAVA反序列化漏洞
目录 反序列化漏洞 序列化和反序列化 JAVA WEB中的序列化和反序列化 对象序列化和反序列范例 JAVA中执行系统命令 重写readObject()方法 Apache Commons Collec ...
最新文章
- 求n!中含有质因子p的个数
- C 语言编程 — 程序的装载与运行
- 能被选为2021最佳开源项目的WEB框架究竟有多棒?
- zcmu1209(dfs)
- html 字符串最后加空格,html space空格符
- 机器学习 综合评价_PyCaret:机器学习综合
- Linux的学习笔记~
- obs中音频和视频的同步
- 工大瑞普 NP-OSPF综合实验
- SSM系类代码:org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer
- c语言去尾法和进一法的例子,进一法或去尾法在生活中的应用教学案例.doc
- 【图像处理】PS曲线工具matlab实现 交互自定义灰度映射(Gray Level Transformation)附代码链接
- 程序猿头头:数组应用(indexOf,includes,find,findindex)
- Apostrophe not preceded by \
- 如何在 Unity 中使用 Probuilder 设计一个简单的关卡
- 手机如何取消安全模式
- 中职计算机专业优质课公开课,如何上中职计算机公开课.pdf
- vivo统一告警平台设计与实践
- 华附计算机学神,【学习】时隔13年,华附两牛娃杀进奥数国家队,父母亲述学霸成长史!...
- flask专题-小说网站开发二(抓取数据)
热门文章
- 负载均衡实现,一个域名对应多个IP地址【转】
- 计算机演示文稿的使用步骤,将编辑好的演示文稿在其他计算机放映用什么功能...
- 在<selectKey></selectKey>标签中使用多个sql语句时报错;Error selecting key or setting result to parameter object. C
- 用一个网页展示项目成果
- 昨晚凌晨1点58分,产品1.0版本上线了
- url、src、herf的区别
- 【Home键的监听】
- NKOJ 3652 shallot (线性基+CDQ分治)
- MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂
- 深入理解APP的缓存原理机制