Java基础学习
初学Java,记录每一步学习过程。
是小李同学呀~
这个作者很懒,什么都没留下…
展开
-
int[]->list int[]->Integer[] list->int[]...
// int[] 转 ListList list1 = Arrays.stream(data).boxed().collect(Collectors.toList());// Arrays.stream(arr) 可以替换成IntStream.of(arr)。// 1.使用Arrays.stream将int[]转换成IntStream。// 2.使用IntStream中的boxed()装箱。将IntStream转换成Stream。// 3.使用Stream的collect(),将Stre转载 2022-04-19 20:14:22 · 213 阅读 · 0 评论 -
Java Stream流综合案例
综合案例:现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或堵强for循环)和stream流依次进行以下若干操作步骤;1.第一个队伍只要名字为3个字的成员姓名:2.第一个队伍筛选之后只要前3个人:3.第二个队伍只要姓张的成员姓名;4、第二个队伍筛选之后不要前2个人;5.将两个队伍合并为一个队伍;6.打印整个队伍的姓名信息。两个队伍(集合)的代码如下:package com.m.demo2;import java.util.ArrayList;im原创 2022-03-16 17:01:14 · 708 阅读 · 0 评论 -
Java jdk8新特性(接口定义方式、Lambda、Stream流)
接口的定义方式jdk7接口的特点:1、接口中的方法都是抽象方法,接口中的属性都是静态常呈。2、实现类实现接口,必须要实现接口中所有的抽象方法3、实现类可以实现多个接口4、接口不能实例化5、接口不能写构造方法。在java8以后,接口中可以添加使用default或者static修饰的方法,在这里我们只讨论default方法,default修饰方法只能在接口中使用,在接口中被default标记的方法为普通方法,可以直接写方法体。static方法特点:1、用static修饰的方法可以有方法体2、原创 2022-03-16 14:25:32 · 947 阅读 · 0 评论 -
java List集合存储多个Person对象,完成对List集合的排序,按照年龄升序排序(3种实现方式对比)
1.匿名内部类对象的方式2.lambda表达式的标准方式3.lambda表达式的简化方式步骤:需要实现Comparable接口中的comparaTo(T o)方法,进行比较一般方式package com.m.demo;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Person implements Comparable<Person>原创 2022-03-16 11:04:42 · 2152 阅读 · 0 评论 -
Java网络编程练习把本地的文件上传到服务器保存
1)文件上传到客户端步骤:1.创建客户端socket对象,指定要连接的服务器的ip地址和端口号2.客户端socket对象调用getOutputStream方法,获取客户端的字节输出流对象3.创建文件字节输入流FilelnputStream对象,指定客户端本地文件。4.通过字节数组读(客户端本地文件)和写(服务器端)5.客户端socket对象调用getlnputStream方法,获取客户端的字节输入流对象6.通过客户端的字节输入流对象调用read方法,读取服务器端发送回来的响应数据7.关闭流,.原创 2022-03-15 10:56:59 · 4361 阅读 · 0 评论 -
Java网络编程
软件架构CS/BSC/S结构︰全称为址client/server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构︰全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。网络通信协议网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据原创 2022-03-14 22:20:55 · 1275 阅读 · 0 评论 -
Java网络编程练习(客户端与服务器相互对话)
服务器和客户端相互对话,使用打印流和缓冲流包装后,提高效率客户端package com.m.demo5;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.原创 2022-03-14 22:19:16 · 1446 阅读 · 0 评论 -
Java多线程02(内存模型 死锁 等待唤醒机制 Lock锁 线程池)
Java 内存模型(面试)1、什么是Java内存模型?大家不要认为是我们之前讲解的JVM的内存模型,堆和栈、方法区这些概念它是JVM里面。Java内存模型简称JMM,定义了一个线程对另一个线程可见。共享变量存放在主内存中,每个线程都有自己的本地内存(本地内存是主内存的一个副本),当多个线程同时访问一个数据的时候,可能本地内存没有及时刷新到主内存,所以就会发生线程安全问题。解读:当线程1取得cpu的控制权,先会修改本地内存,x修改为1,然后把主内存中的共享变量修改成1;主内存再次将x的值同步给本地内原创 2022-03-14 13:51:58 · 581 阅读 · 0 评论 -
Java多线程
进程和线程的概念(面试)1、程序和进程是什么?程序是从上往下执行的,单线程运行程序:是对数据描述和操作的代码集合。比如我们说的暴风影音、Office中的word、QQ、微信。程序是一个静态的概念。程序运行后就是进程进程:是运行中的程序,或者是程序的一次动态执行,它对应从代码的加载、执行、执行完毕。它是一个动态的概念,它有生命周期。一句话概括:系统运行的一个或者多个程序,叫做进程。特点:1)进程是系统运行程序的基本单元。2)每个进程有自己的独立的一块内存空间、一组系统资源。3)每一个进程原创 2022-03-13 17:42:49 · 546 阅读 · 0 评论 -
Java IO流之(转换流 缓冲流 序列化流 过渡类 打印流 配置文件)
转换流使用转换流来设置文件的编码,使文件的读取更方便解决乱码问题转换流使字节和字符之间的桥梁InputStreamReader是字节通过字符流的桥梁,把字节流转成字符流。outputStreamWriter是字符通过字节流的桥梁,把字符流转成字节流。读取 InputStreamReader构造方法InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。 InputStreamReader(InputStr原创 2022-03-12 17:03:24 · 475 阅读 · 0 评论 -
Java 字节流
FileInputStream构造方法FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。 FileInputStream(String name) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。 方法摘要int available() 返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不原创 2022-03-11 11:43:37 · 185 阅读 · 0 评论 -
Java笔记之IO流
IO流概念什么是流硬件设备和程序之间进行数据交互;数据在硬件和程序之间流动;类似于水流。(input)(output)IO流作用文件上传和下载程序在内存中,,,硬件和内存的数据交互。读进来,写出去流的分类源:需要传输的数据本身目标对象:把数据传输到哪输出流和输入流是成对出现的(byte字节)字节流:一般用在传输非文本文件的数据,二进制数据:图片,视频…不能使用记事本打开(char字符)字符流:一般处理我呢吧数据:如txt等字节流:byte字节 1byte=8位字符原创 2022-03-10 22:17:54 · 273 阅读 · 0 评论 -
Java笔记 之 File类和递归算法
File类概念:在java中,在日常生活中,经常会对电脑上的文件进行操作,比如:把程序中的内容,写入到电脑上文件中;或者是把电脑中的文件的内容,读取到程序中;这种过程,就叫做流,这种文件的操作,java中使用File类来解决。Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。绝对路径、相对路径windows(个人PC端):绝对路径:根目录开始;相对路径:项目目录开始Linux 和Unix系统(服务器):没有盘符概念:原创 2022-03-10 18:03:59 · 228 阅读 · 0 评论 -
Java笔记之集合框架Set&Map
Set集合元素是无序的,不可重复的不存在下标的,遍历需要使用迭代器和foreach继承collection接口,没有get()方法实现类hashSet()-实现类 LinkedHashSet() 插入顺序和迭代顺序一致常用方法 Scanner s=new Scanner(System.in); System.out.println("请输入字符串"); String str=s.next(); Set set=new HashSet(); char[] ch=str.原创 2022-03-09 16:44:00 · 527 阅读 · 0 评论 -
Java笔记之集合
集合框架的概念数组问题:连续的,添加删除麻烦数组长度是固定的,无法扩展数组只能存储一种类型的数据集合用来存储一组对象。集合的长度是可以扩展的(自动扩展)集合可以存储不同类型的数据(只能存储引用数据类型)(基本类型会先转为包装类然后转成Object类型)操作非常方便,性能更强集合框架的继承体系Collection单列接口List子接口:有序的,可以重复1、实现类ArrayList:底层实现是可变数组,是Object数组,查询速度块,增删慢2、实现类LinkedList原创 2022-03-08 21:54:19 · 349 阅读 · 0 评论 -
Java String常用类和方法笔记
String的概念字符串类型。string 类代表字符串。Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区(StringBuilder和StringBuffer)支持可变的字符串。因为String对象是不可变的,所以可以共享数据(共享机制)。例如: String str = "abc;String的值是常量String对象是不可变的,不能通过赋值的方式修改String的值是共享的,共享机制一般用在赋值和字符串连接比较少原创 2022-03-08 16:17:13 · 249 阅读 · 0 评论 -
Java API(1.6、1.8、1.9)
链接:https://pan.baidu.com/s/1HyyD9kS3fLV27KyjJuk5FA提取码:cw9g原创 2022-03-08 15:59:52 · 247 阅读 · 0 评论 -
Java高级API常用类
包装类就是把基本数据类型包装成对象,可以使用对象的属性和方法基本数据类型包装类型byteByteshortShortcharCharacterintIntegerlongLongfloatFloatdoubleDoublebooleanBoolean装箱和拆箱装箱的概念:就是把基本数据类型转换成包装类型。Integer i=10;手动装箱方式一:通过包装类的构造方法包装类型 对象名=new 包装类型(基本类原创 2022-03-07 21:55:00 · 157 阅读 · 0 评论 -
Java异常处理机制笔记
什么是异常非正常的情况在程序运行过程中,发生的异常情况,导致程序意外终止的情况。如何处理异常在Java中,把异常信息封装程朗一个类,当出现了问题,就会创建异常类对象并抛出异常相关信息(如异常出现的位置、原因等)1. 遇到异常,检查代码,修改代码,解决异常2. 通过if判断,来解决代码中可能出现的异常。代码结构臃肿,不利于阅读和维护3. Throwable类(Java语言中所有错误和异常的超类)**error:**发生了错误,只能修改代码,不能使用异常处理机制来解决exception: ch原创 2022-03-07 13:24:25 · 133 阅读 · 0 评论 -
JAVA接口
接口的概念接口是一个特殊的类,不能使用class关键字修饰,接口中的方法全部都是抽象方法,接口中的变量都是静态变量。比抽象类更抽象。接口也是一种设计思想的体现。可以看作一张图纸(定义规范、要求。)接口关键字interfacehas…a…(…有一个…)这可以接口关系is…a(…是一个…)这是继承关系public interface 接口名{//静态常量//抽象方法}接口中的方法都是抽象方法:public abstract:(隐式存在)接口中的变量都是静态常量:public abstr原创 2022-03-05 12:00:42 · 248 阅读 · 0 评论 -
Java面向对象三大特征总结笔记
总结下封装、继承、多态的作用:封装:把对象的属性与方法的实现细节隐藏,仅对外提供一些公共的访问方式构造方法传参,破坏了封装性继承:子类会自动拥有父类所有可继承的属性和方法。多态:配合继承与方法重写提高了代码的复用性与扩展性;如果没有方法重写,则多态同样没有意义。多态侧重思想。体会:替换性...原创 2022-03-04 16:37:00 · 153 阅读 · 0 评论 -
Java面向对象笔记五(多态)
多态的概念多态的使用多态的使用细节多态的应用场景instanceof关键字综合练习原创 2022-03-04 13:23:31 · 342 阅读 · 0 评论 -
Java 面向对象笔记四(abstract final 常用api改写)
抽象类抽象类:使用abstract关键字修饰的类,叫做抽象类。(不容易写方法体的方法,就不用写直接写抽象方法,让子类继承后,具体实现)抽象方法//抽象方法修饰符 abstract 数据类型 方法名(参数列表);用;号结束,不写具体的方法体//抽象类abstract class 类名{}抽象类和抽象方法的特点抽象方法必须放在抽象类中!但抽象类中可以有普通方法如果父类是抽象类,那么子类必须都重写父类的抽象方法如果子类不重写父类全部抽象方法,可以将该子类也定义成抽象类抽象方法实际原创 2022-03-03 22:17:46 · 223 阅读 · 0 评论 -
Java面向对象笔记三(static 继承 super)
方法的值传递构造方法:在创建对象的时候,给对象的属性赋值this关键字和this()语句:this表示当前对象的引用使用private 保护类的属性;快速getter setter:Shift+Alt+Sjava访问修饰符private、public、protected、defaultStatic关键字不创建对象就可以调用类中的属性和方法static关键字:用来修饰类的属性和方法,表示静态的,静态属性/静态方法,可以直接被类名调用。类名.属性名;类名.方法名//修饰变量访问修饰符.原创 2022-03-03 12:56:24 · 158 阅读 · 0 评论 -
Java面向对象练习
package com.m.demo3;import java.util.Arrays;import java.util.Scanner;public class Customer {// 属性 public int length=0; public String[] customers=new String[10]; // 方法1 新增客户 public void addCustomer(String name) { if(length<customers.l.原创 2022-03-03 09:29:45 · 110 阅读 · 0 评论 -
Java面向对象笔记二(值传递的方式&构造方法)
方法按值传递方法引用传递可变参数构造方法this关键字this()语句什么是封装封装的好处如何封装属性Java访问修饰符static关键字原创 2022-03-02 20:16:04 · 230 阅读 · 0 评论 -
Java创建第一个程序:Hello World
使用eclipse创建第一个Java程序新建文件夹(Javaworkspace),打开eclipse选择文件夹新建Java project选择src->new->package在新建的package上右键new->class写入代码package com.m.demo;public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"原创 2022-02-23 14:06:16 · 170 阅读 · 0 评论 -
Java三种不同的注释方式
//单行注释 /*多 * 行 * 注 * 释 */ /** * doc注释,一般放在方法和类上面 */原创 2022-02-23 16:37:30 · 78 阅读 · 0 评论 -
Java初学1:下载与安装(jdk eclipse)
1、Java下载与安装Jdk下载与安装安装过程Jdk下载与安装官网下载(jdk官网下载)安装包附在最下方安装过程双击打开后,最好不要修改路径,直接安装。很多博文都说需要重新设置路径,在这里是不需要手动设置的。安装完成后,打开cmd,输入java -version,查看安装是否成功。如图显示版本信息及是安装成功。...原创 2022-02-23 11:50:29 · 80 阅读 · 0 评论 -
Java 常用快捷键
System.out.println()先输入sysout 然后 alt+/CTRL+/ :快速添加注释,能为光标所在行或所选定行快速添加注释或取消注释。CTRL+D : 删除当前行。原创 2022-02-23 17:01:01 · 252 阅读 · 0 评论 -
Java 变量 常量
//数据类型 变量 常量 /* * 常量 是在数据类型前加final 只能赋值一次 * 命名规则:所有单词字母都大写,单词之间用_分隔 * 数据类型转换: * 短->长 精度低->精度高 * 强制转换:值前面加数据类型 * 高位丢失 */...原创 2022-02-23 16:53:06 · 55 阅读 · 0 评论 -
Java画树
package com.m.demo;public class tree { public static void main(String[] args) { //空白直角梯形和 -等腰三角形 for(int i=0;i<4;i++) { for(int j=0;j<7-i;j++) { System.out.print(" "); } for(int k=0;k<2*i+1;k++) { System.out.print("*");原创 2022-02-25 11:30:26 · 372 阅读 · 0 评论 -
Java 简单语法(if switch 循环)
ifpackage com.m.demo;import java.util.Scanner;public class IfSwitchWhile2 { public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.print("输入成绩"); double score=s.nextDouble(); // if(score<60.0) {// Syste原创 2022-02-24 16:54:41 · 226 阅读 · 0 评论 -
Java画矩形 直角三角形 等腰三角形
package com.m.demo;public class test3 { public static void main(String[] args) {//// 画矩形9*5// for(int i=1;i<=9;i++) {// for(int j=1;j<=5;j++) {// System.out.print("-");// }// System.out.print("\r");// }////直角三角形// for(int i=原创 2022-02-24 20:37:16 · 476 阅读 · 0 评论 -
Java位运算符
属于二进制运算“>>”:右位移:(1)低位舍弃,高位补0 (2)每右移一位,相当于取整2“<<”:左位移:(低位补0,高位舍弃)(2)每左移一位,相当于乘以2原创 2022-02-23 21:31:00 · 147 阅读 · 0 评论 -
Java Scanner输入
package com.m.demo;import java.util.Scanner;public class test3 { public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.print("输入内容"); String line=s.nextLine();//包括空格 String line1=s.next();//不包括空格 int line2=s.原创 2022-02-23 21:54:07 · 135 阅读 · 0 评论 -
Java 数组遍历(for foreach)
package com.m.demo;public class arrayTest { public static void main(String[] args) { int[] a= {12,34,56};// 循环遍历 for(int i=0;i<a.length;i++) { System.out.println(a[i]); } System.out.println("----------------------");//foreach遍历 fo原创 2022-02-25 11:40:10 · 619 阅读 · 0 评论 -
Java二维数组练习
package com.m.demo;import java.util.Arrays;import java.util.Scanner;public class Test1 { public static void main(String[] args) { /*案例:*使用二维数组保存4个班级【一班是5个学生,二班是3个学生,三班是6学生,四班5个学生】*1、每个班学生的年龄。注意求最值,=平均年龄、最大年龄、最小年龄*2、不能使用Arrays.sort.要求使用冒泡排序降序排列*原创 2022-03-01 10:56:48 · 1089 阅读 · 0 评论 -
Java自增自减
package com.m.demo;public class test2 { public static void main(String[] args) {// 自增 自减 int i=10;// i++;// System.out.println(i);// 快速复制一行 ctrl +alt+ down ctrl+alt+up // int j=i++; // 自增 自减写在后面,优先级最低;自增 自减写在前面,优先级最高// System.out.prin原创 2022-02-23 20:30:00 · 181 阅读 · 0 评论 -
Java传参练习
需求说明:正确使用带参方法实现学员信息管理,增加学员姓名;在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找工成功,程序输出结果如图所示。package com.m.demo2;import java.util.Arrays;import java.util.Scanner;public class Student {// 属性 public String stuName[]=new String[3]; // 方法1 public boolean i.原创 2022-03-02 17:02:24 · 524 阅读 · 0 评论