- 博客(45)
- 收藏
- 关注
原创 Day43 网络编程入门
连接要明确客户端和服务器端,由客户端向服务器端发出连接请求,每次连接的创建都需要经过“三次握手” (1 客户端发出连接请求,等待确认 2 服务器端回送响应,通知客户端收到连接请求 3 客户端再次发送确认信息,确认连接)上传,下载文件和浏览网页等。System.out.println("数据是:"+new String(dp.getData(),0,dp.getLength()));案例:UDP发送数据(数据来自键盘录入,直到输入数据886,结束) UDP接收数据(不知道发送端停止时间,采用死循环接收)
2023-05-09 09:30:00
361
1
原创 Day42 生产者消费者
/创建生产者对象,把奶箱对象作为构造方法参数传递,因为在这个类中要调用存储牛奶操作。//创建消费者对象,把奶箱对象作为构造方法参数传递,因为在这个类中要调用存储牛奶操作。//创建2个线程对象,分别把生产者对象和消费者对象作为构造方法参数传递。public void run(){ //重写run()方法。//生产者生产5瓶牛奶。//如果没有牛奶,就生产牛奶。//生产完毕后,修改奶箱状态。//如果没有牛奶,等待生产。//提供存储牛奶和获取牛奶的操作。//如果有牛奶,等待消费。//如果有牛奶就消费牛奶。
2023-05-08 09:00:00
396
原创 Day41线程同步
System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets+"张票");System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets+"张票");System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets+"张票");Thread t1 = new Thread(st,"窗口1");
2023-05-07 09:00:00
578
原创 Day40 实现多线程
/还可以通过构造方法设置线程名称 //获取main()方法所在的线程名称:public static Thread currentThread();设置和获取线程名称:void setName(String name):将此线程的名称更改为等于参数name String getName():返回此线程的名称。抢占式调度模型:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU时间片相对多一些。//void start()导致此线程开始执行;
2023-05-06 09:00:00
642
原创 Day39 IO流
2. 字符输出流Writer (写数据:void write(int ch):一次写一个字符 void write(char[] chs,int index,int len):一次写一个字 符数组的一部分) 分为OutputStreamWriter有子类FileWriter BufferedWriter(void newLine(): 写一个换行符 void write(String line):一次写一个字符串)如果按照数据类型分为字节流(字节输入流和输出流)和字符流(字符输入流和字符输出流)。
2023-05-05 09:00:00
589
原创 Day8 Collections类
岳不群的牌是:♥3 ♠3 ♥4 ♠4 ♠7 ♦10 ♣10 ♥10 ♦J ♦Q ♣Q ♠Q ♣K ♠K ♣A ♣2 小王。左冷禅的牌是:♦3 ♣4 ♦5 ♣5 ♠5 ♣6 ♥6 ♠6 ♣7 ♦8 ♣8 ♥8 ♣9 ♠10 ♥K ♠2 大王。令狐冲的牌是:♣3 ♦4 ♥5 ♦7 ♥7 ♠8 ♦9 ♥9 ♠9 ♣J ♥Q ♦K ♦A ♥A ♠A ♦2 ♥2。//洗牌(洗的是编号),用Collections的shuffle()方法实现。//发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收)
2023-05-04 09:00:00
716
原创 Day37 Map集合
/遍历方法2,获取所有键值对对象的集合:Set<Map.Entry<K, V>> entrySet():获取所有键值对对象的集合。遍历键值对对象的集合,得到每一个键值对对象,用增强for实现,得到每一个Map.Entry。//HashMap保证键的唯一性。map.put("003","任我行");map.put("001","令狐冲");map.put("002","岳不群");map.put("003","左冷禅");map.put("尹志平","小龙女");map.put("尹志平","小龙女");
2023-05-03 09:30:00
570
原创 Day36泛型
:表示元素类型未知的List,它的元素可以匹配任何的类型,这种带通配符的List仅表示它是各种泛型List的父类,并不能把元素添加到其中。类型通配符的下限:<?泛型提供了编译时类型安全检测机制,其允许编译时检测到非法的类型,本质是参数化类型,所操作的数据类型被指定为一个参数。//泛型定义格式:<类型>:指定一种类型的格式,这里类型可以看成是形参。<类型1,类型2……泛型方法定义格式:修饰符 <类型> 返回值类型方法名(类型 变量名){ } 范例:public <T> void show (T t){ }
2023-05-02 08:00:00
611
原创 Day35集合2
/TreeSet集合,元素有序(不是指存储和取出顺序,而是按照规则排序,排序方法却决于构造方法),TreeSet():根据其元素的自然排序进行排序;Iterator<E>iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到;存储的元素可以重复。//返回值为0,会认为s2和s1(即后面的对象和前面的对象)是相同元素,因此后面元素添加失败,只有一个元素。//Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到。
2023-05-01 09:00:00
825
原创 Day34异常
java 中异常分为编译时异常和运行时异常,也被称为受检异常和非受检异常,所有的Runtime Exception类及其子类被称为运行时异常,其他异常都是编译时异常,编译时异常有可能出现问题,也可能没问题。运行时异常,无需显示处理,也可以和编译时异常一样处理)程序从try里的代码开始执行,出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,当Java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常处理,执行完毕后,程序还可以继续往下执行。
2023-04-30 09:30:00
705
原创 Day33常用API
System.out.println(System.currentTimeMillis()*1.0/1000/60/60/24/365 + "年");} //结果:排序前:[24, 69, 80, 57, 13] 排序后:[13, 24, 57, 69, 80]} //结果:排序前:[24, 69, 80, 57, 13] 排序后:[13, 24, 57, 69, 80]//注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null;
2023-04-29 09:30:00
1428
原创 Day32内部类
/成员内部类创建对象格式:外部类名 . 内部类名 对象名 = 外部类对象 . 内部类对象;//局部内部类是在方法中定义的类,所以外界无法直接使用,需要在方法内部创建对象并使用该类可以直接访问外部类成员,也可以访问方法内的局部变量。按照内部类在类中定义的位置不同,可以分为两种:在类的成员位置被称为成员内部类;//外部类对象调用方法,间间访问到局部内部类的对象i调用的show方法。//内部类可以访问外部类的成员,包括私有。
2023-04-28 09:30:00
719
原创 Day31 形参与返回值
如果方法的形参是类名,那么需要的是该类的对象来调用这个方法(public void useCat(Cat c) Cat c = new Cat();如果方法的返回值是类名,其实返回的是该类的对象(public Cat getCat(){ cat c = new Cat();如果方法的形参是抽象类名,那么需要的是该抽象类的子类对象。如果返回值是抽象类名,其实返回的是该抽象类的子类对象。方法的返回值是接口名,返回的是该接口的实现类对象。方法的形参是接口名,需要的是该接口的实现类对象。
2023-04-27 07:30:00
24
原创 Day30 接口
接口不能直接实例化,参考多态方式,通过实现类对象实例化,这叫接口多态(具体类多态,抽象类多态,接口类多态)。类和类的关系是继承关系,只能单继承,但是可以多层继承;类和接口的关系是实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口(public class InerImpl extends Object implements Inter 1, Inter 2, Inter 2{});接口和接口关系是继承关系,可以单继承,也可以多继承。System.out.println("猫吃鱼");
2023-04-26 10:00:00
352
原创 Day29抽象类
抽象类和抽象方法必须使用abstract关键字修饰(public abstract class 类名{} public abstract void eat();在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。System.out.println("吃东西");System.out.println("猫吃鱼");System.out.println("睡觉");//如果不想给出方法体,需要定义抽象类。//抽象类中也可以有非抽象方法。//使用带参方法创建。
2023-04-25 09:30:00
22
原创 Day28多态
多态中成员访问特点:成员变量:编译看左边,执行看左边 成员方法:编译看左边,执行看右边(成员方法有重写,而成员变量没有)。多态中的转型:向上转型(从子到父 父类引用指向子类对象如:Animal a = new Cat();//调用方法(结果是猫吃鱼)先看左边编译(Animal),再看右边执行(Animal中有eat方法可以调用)//报错,无法调用(Animal没有playGame方法),是子类特有方法;//如果要用playGame方法,创建Cat类对象,调用Cat类中方法。//测试类(向上转型,从子到父;
2023-04-24 09:30:00
20
原创 Day27修饰符
static关键字是静态的意思,可以修饰成员方法,成员变量。static修饰被类的所有对象共享,这也是我们判断是否使用静态关键字的条件。可以通过类名调用,也可以通过对象名调用。非静态成员方法可以访问本类中所有静态和非静态成员变量方法;静态成员变量只能访问静态的成员变量和方法。final关键字是最终的意思,可以修饰成员方法,成员变量,类。变量是基本类型时,final修饰指的是基本类型的数据值不能发生改变;变量是引用类型,final修饰指的是引用类型的地址值不能发生改变但是地址里面的内容是可以发生改变的。
2023-04-23 09:30:00
27
原创 Day27继承
/子类中所有的构造方法默认都会访问父类中无参的构造方法,子类会继承父类数据,可能还会使用父类数据,所以子类初始化之前,一定要先完成父类数据初始化(每个子类构造方法的第一条语句默认是super()),如果父类中没有无参构造方法,只有带参构造方法,就需要在父类中自己提供一个无参构造方法,或者使用super关键字取显示的调用父类的带参构造方法。如果子类中出现了和父类中一摸一样的方法声明,子类需要父类功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,既有父类中功能,又添加了子类特有内容。
2023-04-22 09:30:00
29
原创 Day25 案例学生管理系统
System.out.println(s.getSid()+"\t\t"+s.getName()+"\t"+s.getAge()+"岁\t"+s.getAddress());System.out.println("--------欢迎来到学生管理系统--------");// System.out.println("添加学生");//System.out.println("删除学生");//System.out.println("修改学生");// System.out.println("查看学生");
2023-04-21 09:30:00
32
原创 Day24集合基础
/public void add(int index,E element):在此集合的指定位置插入指定的元素。//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素。//public E remove(int index):删除指定索引处的元素,返回被删除的元素。//public E get(int index):返回指定索引处的元素,原集合不改变。
2023-04-20 10:00:00
28
原创 Day24集合基础
/public void add(int index,E element):在此集合的指定位置插入指定的元素。//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素。//public E remove(int index):删除指定索引处的元素,返回被删除的元素。//public E get(int index):返回指定索引处的元素,原集合不改变。
2023-04-20 09:30:00
23
原创 Day23 ApI
API(Application Programming Interface):应用程序编程接口Java API:指的是JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,不用管这些类如何实现的,只需要学习这些类如何使用即可,可以通过帮助文档来学习这些API如何使用。//创建对象//接收数据System.out.println("请输入一个字符串数据:");//Ctrl + Alt + V快捷键//输出结果。
2023-04-19 10:00:00
30
原创 Day22 封装
封装:是面向对象三大特征之一(封装,继承,多态),是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。标准类的制作:成员变量,使用private修饰 构造方法,提供一个无参构造方法,提供一个带多个参数的构造方法 成员方法:提供一个成员变量对应的setXxx()/getXxx()/提供一个显示对象信息的show() 创建对象并为其成员变量赋值的两种方式:无参构造方法创建对象后使用setXxx()赋值,使用带参构造方法直接创建带有属性值的对象。
2023-04-18 09:30:00
22
原创 Day21 类和对象
局部变量:在方法中的变量(在形参位置的变量也包含在内),在栈内存中,随着方法的调用而存在,随着方法调用完毕而消失。成员变量:在类中,但在方法外(main方法也算)的变量,在堆内存中,随着对象存在而存在,随着对象消失而消失。对象是类的实体,具有各种特征,每个对象的每个属性都拥有特定的值,对象能够执行的操作叫做对象行为(如手机打电话)。使用对象: 1使用成员变量:格式 // 对象名.变量名 范例: p,brand。2使用成员方法: 格式: //对象名.方法名() 范例: p.call()类的定义:定义类;
2023-04-17 10:30:00
27
原创 Day20 Debug和循环案例
Debug是供程序员使用的程序调试工具,可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。Debug调试称为断点调试,可以在Debug窗口看代码块到哪里,看程序执行中变量的变化。console窗口可以看到程序执行过程中的结果展示,点Step into(F7)这个箭头可以往下进行。(如果数据来自于键盘输入,一定要输入数据,否则Debug调试会停止)
2023-04-16 10:30:00
42
原创 Day19 方法
方法是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集创建方法后才能使用方法,创建方法过程称为方法定义方法创建后不是直接运行,需要调用方法格式public static void 方法名(){//方法体方法调用格式:方法名();范例: isEvenNumber();//注意: 方法必须先定义后调用,否则程序将报错//定义一个方法,在方法中定义一个变量,判断该数据是否是偶数int a = 10;}else{
2023-04-15 10:30:00
20
原创 Day17 do……while循环
/条件,即使不满足条件,也至少执行一次,这就需要do……while循环(至少一次),先执行再判断;}while(布尔表达式)
2023-04-14 10:30:00
18
原创 Day18 for循环
/100.for(idea中快捷输入)=for(i=0;System.out.println("偶数的和"+everSum);System.out.println("奇数的和"+oddSum);for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。
2023-04-14 10:30:00
25
原创 Day16 while 循环
/大多数情况,我们会想办法让循环停止,需要一个让表达式失效的方式来结束循环。//计算从1+2+3+……} //输出1到100的值,自增运算,当i自增到100时停止。//只要布尔表达式为true,循环就会一直执行。尽量避免死循环(程序会崩溃)while(布尔表达式){
2023-04-13 10:30:00
23
原创 Day15 switch 多选择结构
/可选(可以有,如果输入A在此停止,后面不再输出)//switch语句中的变量类型可以为(byte short int char)System.out.println("位置等级");//可选(可以有任意数量的case语句)System.out.println("优秀");System.out.println("良好");System.out.println("及格");System.out.println("挂科");//case穿透现象(没有break一直输出所有选项)字符串的本质还是数字。
2023-04-12 10:09:34
24
原创 Day14if选择语句
判断是否可行,才去执行,这样过程可以通过if语句来表示。//语法if(布尔表达式){//如果布尔表达式为true将执行的语句System.out.println("请输入内容;");//equals判断字符串是否相等} //输入Hello 结果为Hello 和End;输入其他,结果为End。
2023-04-11 09:00:00
17
原创 Day13 scanner用法
int i = 0;System.out.println("请输入整数:");//如果……那么System.out.println("整数数据:"+i);}else {System.out.println("输入的不是整数");System.out.println("请输入小数:");System.out.println("输入的小数:" +f);}else {System.out.println("输入的不是小数");如果输入的是整数,满足条件,输出整数。
2023-04-10 14:30:00
24
原创 Day12Scanner对象
通过scanner类的next()和nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据。//next Line()是以Enter为结束符,next Line()方法返回的是输入回车之前的所有字符。System.out.println("输出的内容为: "+str);System.out.println("输出的内容为: "+str);System.out.println("输出的内容为:"+str);//判断是否还有输入。
2023-04-10 10:00:00
34
原创 Day11包机制
如果要使用一个包中的成员,则需要在Java中导入该包,使用”import“语句可以完成此功能。倒置com.baidu.www。.*表示导入包下所有的类。
2023-04-09 10:00:00
62
原创 Day10逻辑与运算
/逻辑或运算:两个变量有一个为真,则结果才为true。//逻辑与运算:两个变量都为真,结果才为真true。//如果是真,则变为假,如果为假,则变为真。由于(c<4)为假,在与(and)运算中进行短路运算,结果直接输出为false。|(或运算)对应位都为0时,运算后才是0,否则为1。//如果x==true,则结果为y,否则结果为z。
2023-04-08 10:00:00
39
原创 Day09运算符
/结果5,c被两次自增的a(5)赋值,所以c=a++和++a=5。//结果3,b被自增前的a(3)赋值,所以b=a=3。//结果5,a经过a++和++a两次自增,由3到5。//执行完这行代码后,先给b赋值,再自增。//执行完这行代码前,先自增,再给c赋值。//++ -- 自增 自减 一元运算符。
2023-04-07 10:00:00
18
原创 Day08 变量
/修饰符,不存在先后顺序(static和final可以互换位置)类成员变量:首字母小写和驼峰原则:monthSalary(除了第一个单词外,后面的单词首字母大写 lastName)//因为类变量static,这里可以直接调用。//double类型自动转换。//如果不自行初始化,这个类型的默认值0或者0.0;//变量类型 变量名字 = new Demo08();方法名:首字母小写和驼峰原则:run(), runRun()每个变量都有类型,类型可以是基本类型,也可以引用类型。//实例变量:从属于对象。
2023-04-06 10:00:00
23
原创 Day06类型转换
/先把一个数转换为long。//默认是int,转换之前已经存在问题?//-1474836480,计算时溢出了。把高容量转换到低容量的时候强制转换,转换时可能存在溢出和精度问题!输出结果128 —128 (Byte类型取值为—128到127)byte b = i;//需要将i转换成byte类型。//JDK新特性,数字之间可以用可以用下划线分割。//强制转换 (类型)变量名 高--低。//强制转换 (类型)变量名。//自动转换 低--高。
2023-04-05 10:00:00
19
原创 Day07类型转换
/先把一个数转换为long。//默认是int,转换之前已经存在问题?//-1474836480,计算时溢出了。把高容量转换到低容量的时候强制转换,转换时可能存在溢出和精度问题!输出结果128 —128 (Byte类型取值为—128到127)byte b = i;//需要将i转换成byte类型。//JDK新特性,数字之间可以用可以用下划线分割。//强制转换 (类型)变量名 高--低。//强制转换 (类型)变量名。//自动转换 低--高。
2023-04-05 09:14:10
12
原创 Day06数据类型拓展
/整数拓展:进制 二进制 十进制 八进制0 十六进制0xint i = 10;//八进制0//十六进制0x输出结果10 8 和 16。
2023-04-04 09:00:00
27
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人