java学习笔记6-面向对象编程
自用的学习笔记,若有错误欢迎指出。
回顾方法方法的定义
修饰符
菜鸟教程-传送门
break和return的区别
break:跳出switch循环,结速循环
return:代表方法的结束,返回一个结果
方法名
注意命名规范,要做到见名知意
参数列表
参数类型
参数名
方法的调用
静态方法 static
static是和类一起加载的
12345678910111213141516171819//静态方法 staticpublic class Demo02{ public static void main(String[] args){ //实例化这个类 new //对象类型 对象名 = 变量值 Student student = new Student(); student.say(); } }//这里在单独新创建一个类public class Student{ //定义一个方法 publ ...
Stream流
Stream流(JDK8新特性)Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。
Stream流体验案例需求:有一个List集合,元素有"张三丰","张无忌","周芷若","赵敏","张强",找出姓张,且是3个字的名字,存入到一个新集合中去。
123List<String> names = new ArrayList<>();Collections.addAll(names, "张三丰","张无忌","周芷若","赵敏","张强");System.out.println(names);
用传统方式来做,代码是这样的
12345678// 找出姓张,且是3个字的名字,存入到一个新集合中去。List<String> list = new ArrayList<>();fo ...
集合进阶
集合概述和分类Java还提供了很多种其他的集合,如下图所示:
Collection单列集合Collection是单列集合的根接口,Collection接口下面又有两个子接口List接口、Set接口,List和Set下面分别有不同的实现类,如下图所示:
上图中各种集合的特点如下图所示:
List系列集合:添加元素是有序、可重复、有索引。
ArrayList、LinkedList:有序、可重复、有索引。
Set系列集合:添加的元素是无序、不重复、无索引。
HashSet:无序、不重复、无索引;
LinkedHashSet:有序、不重复、无索引。
TreeSet:按照大小默认升序排序、不重复、无索引
Collection集合的特点:
1234567891011121314ArrayList<String> list = new ArrayList<>(); //存取顺序一致,可以重复,有索引list.add("java1");list.add("java2");list.add("java1" ...
最新文章java线程
多线程线程其实是程序中的一条执行路径。我们之前写过的程序,其实都是单线程程序,如下图代码,如果前面的for循环没有执行完,for循环下面的代码是不会执行的。
1234567public static void main(String[] args) { //代码... for (int i = 0; i < 5; i++) { //...... } //代码...}
多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)
线程创建方式1Java为开发者提供了一个类叫做Thread,此类的对象用来表示线程。创建线程并执行线程的步骤如下
定义一个子类继承Thread类,并重写run方法
创建Thread的子类对象
调用start方法启动线程(启动线程后,会自动执行run方法中的代码)
代码如下
12345678910public class MyThread extends Thread{ // 2、必须重写Thread类的run方法 @Override ...
File以及IO流
File类以及IO流File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹。现在要学习的File类,它的就用来表示当前系统下的文件(也可以是文件夹),通过File类提供的方法可以获取文件大小、判断文件是否存在、创建文件、创建文件夹等。
但是需要我们注意:File对象只能对文件进行操作,不能操作文件中的内容。
所以,我们需要IO流来对文件中的数据进行读取并且写入。
File: 代表文本IO流: 读写数据(可以读写文件,或网络中的数据
File类的使用File类的创建对象用的构造方法:
构造器
说明
public File(string pathname
根据文件路径创建文件对象
public File(String parent,String child)
根据父路径和子路径名字创建文件对象
public File(File parent,String child)
根据父路径对应文件对象和子路径名字创建文件对象
下面我们演示一下,File类创建对象的代码
1需求我们注意的是:路径中"\"要写成& ...
Blender基础操作及按键
Blender的基础操作控制3D视图视角控制观察视角:鼠标中键
平移视图:Shift+鼠标中键
缩放视图:滚动鼠标中键滚轮
控制物体模型移动物体:G
旋转物体:R
缩放物体:S
恢复变换:Alt+G, Alt+R, Alt+S
新建物体:Shift+A
复制物体:Shift+D
删除物体:X 或者 Delete
隐藏物体:H
显示隐藏物体:Alt+H
隐藏没有被选中的物体:Shift+H
选择物体 刷选:C 全选:A
按住Shift可以加选或者减选
视图的切换带小键盘的会更加方便,没有小键盘的话,可以使用“~”键来操作
7:顶视图,ctrl+7 底视图
1:前视图,ctrl+1后视图
3:右视图,ctrl+3 左视图
9:反转当前视图
0:切换摄像机的视角
5:切换透视投影和正交投影
2, 4, 6, 8:前后左右角度微调
+, -:缩放微调
链接封面图来源:https://drive.google.com/drive/folders/14rR66zGJ-ntkNeoqM11wamMc5RwUg4K4
lambda表达式
Lambda表达式Lamdba是有特有的格式的,按照下面的格式来编写Lamdba。
123(被重写方法的形参列表) -> { 被重写方法的方法体代码;}
需要给说明一下的是,在使用Lambda表达式之前,必须先有一个接口,而且接口中只能有一个抽象方法。(注意:不能是抽象类,只能是接口)
像这样的接口,我们称之为函数式接口,只有基于函数式接口的匿名内部类才能被Lambda表达式简化。
123public interface Swimming{ void swim();}
有了以上的Swimming接口之后,接下来才能再演示,使用Lambda表达式,简化匿名内部类书写。
12345678910111213141516171819public class LambdaTest1 { public static void main(String[] args) { // 目标:认识Lambda表达式. //1.创建一个Swimming接口的匿名内部类对象 Swimming s ...
java异常以及处理
异常的体系java异常的种类
运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如: 数组索引越界异常
编译时异常:编译阶段就会出现错误提醒的。(如:日期解析异常)
我们在调用SimpleDateFormat对象的parse方法时,要求传递的参数必须和指定的日期格式一致,否则就会出现异常。 Java比较贴心,它为了更加强烈的提醒方法的调用者,设计了编译时异常,它把异常的提醒提前了,你调用方法是否真的有问题,只要可能有问题就给你报出异常提示(红色波浪线)。
编译时异常的目的:注意!!这里小心点容易出错,仔细检查一下
确认代码没问题,为了让它不报错,继续将代码写下去。这里有两种解决方案。
第一种:使用throws在方法上声明,意思就是告诉下一个调用者,这里面可能有异常啊,你调用时注意一下。
12345678910/** * 目标:认识异常。 */public class ExceptionTest1 { public static void main(String[] args) throws ParseExcepti ...
正则表达式
正则表达式正则表达式其实是由一些特殊的符号组成的,它代表的是某种规则。
正则表达式的作用:
用来校验字符串数据是否合法
可以从一段文本中查找满足要求的内容
正则表达式的好处我们就以QQ号码为例
不使用正则表达式,校验QQ号码代码是这样的
1234567891011121314151617181920public static boolean checkQQ(String qq){ // 1、判断qq号码是否为null if(qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20){ return false; } // 2、qq至少是不是null,不是以0开头的,满足6-20之间的长度。 // 判断qq号码中是否都是数字。 // qq = 2514ghd234 for (int i = 0; i < qq.le ...
算法合集
冒泡排序冒泡排序:
比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置。
每一次比较,都会产生出一个最大和一个最小的数。
下一轮则可以少一次排序
依次循环,直到结束。
我们看到嵌套循环,想到这个算法的时间复杂度为O(n2)。
冒泡排序数字替换逻辑:
将第一额数存放到一个临时的空间当中
将后一个数字放入到前一个数字空间中
将存放在临时空间中的前一个数字放入到原本后一个数字的空间中
实例:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.util.Arrays;public class Demo02 { public static void main(String[] args) { int[] arrays = {1, 23, 454, 342, 55, 8848, 367, 365, 9656}; //冒泡排 ...