Java · PTA探险之旅
写的比较仓促,主要是给自己看的,注重于代码的实践而非理论的叙述
语言的表达上稍有欠缺,并且我懒得修改
我更关注数据结构模块代码的优化,使其更聚焦于算法实现本身
而不是冗杂的总和功能实现(考研需要,孩子毕竟能力有限)
Java在理论上的抽象未必容易理解,而
实践是检验真理的唯一标准
启封の章节 · 摸鱼
极光 · Java · 常用书写学习
1.注意类型自进化情况
byte/short/char--->int---->long---->float---->double
2.二进制0b 八进制0 十进制直接写 十六进制0x 开头
/*
import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.*;class ASRC {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();System.out.printf("%d", a);}}*/ //ASRC - 极光框架import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.*;class ASRC {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();System.out.printf("%d", a);}}
输入输出测试
import java.util.Scanner;public class ASRC {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String a = sc.nextLine();//空格捕获String b = sc.next();//无法捕获空格int c = sc.nextByte();double d = sc.nextDouble();float f = sc.nextFloat();System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);System.out.println(f);}
}
数组遍历测试
import java.util.Scanner;public class ASRC {public static void main(String[] args) {//内层main可以小写Scanner sc = new Scanner(System.in);//输入启动前置int[] a = {1, 2745, 3322, 4, 5257, 6, 7};for (int x : a)System.out.printf("%d ",x);}
}
第十二周
1.关于&& 与 &
A.前者被称作短路与,如果第一条件不成立会直接跳出不执行第二条件
例如:第二条件中有i++的话就不会被执行到
面向对象class:属性+方法构造方式 (内部参数+void动作)
A.构造方法:内嵌同名class,允许不返回数值,用于初始化
B.父类继承、接口调用 启章;内存销毁操作
C.修饰符作用:限定块的访问权限
char转int型(unicode)
import java.util.*;
import java.text.*;
import java.lang.*;class ASRC {public static void main(String[] args) {Scanner sc = new Scanner(System.in);char t = sc.next().charAt(0);System.out.printf("%d", (int) t);}}
第十三周
子类、父类与继承
子类:在父类的基础上进行拓展,拥有父类的方法论,可以修改替代父类的方法论
父类:会传递变量和方法给子类,数据上有无继承关系需要测试
继承:extend [父类名]
另外,不是所有的变量、方法论都会被继承;看父类权限部署
子类的权限只能比父类更宽松
类 | 包 | 子类 | 所有类 | |
---|---|---|---|---|
public | 1 | 1 | 1 | 1 |
protected | 1 | 1 | 1 | |
default | 1 | 1 | ||
private | 1 |
1.子类-父类转化规则
[父类] = new [子类] 可以的,倒过来不行
2.类型探测 instanceof
返回true false;父类引用(父类=new 子类)的探测,既是子类又是父类
3.多态性
静态多态:overload重载,同名但是参数不同(类型,或参数数量)
动态多态:override覆盖,子类通过引用方式赋值给父类(动作重写?)
4.接口
interface 定义一系列(抽象的)动作
如果某个class要implement,那么他需要实现这个接口中的所有动作
让这些·动作·都不再 抽象
接口中的数据都以常量存储(并集成继承)【变相的父类继承】
祖始类:java.lang.Object
注意事项
main是独特的方法论,可以被放在任何类中
如果在类中且【直接调用】类中的方法论,对方必须是static类型
会导致不利影响;main最好独立书写
第十四周
知识概览
一、pack import
1.package xxxxx 后面的包名称或可用 . 作为分隔,体现层次性;允许超长名称
2.通过import进行引入,但是要注意
import java.lang.* 是对lang下【首层子类】进行引入,更深层次的子类需要另外imoprt
二、四大关键字 【final 终态常量】 【static 静态】 【abstract 抽象类】 【this 实例本体】
1. abstract【抽象类】
A.修饰class 或 下属的方法,因为太抽象了、所以不能给出具体的方法
B.作为父类被引用,具体方法论在子类用同名方法中加以实现(覆盖后)
依然可以保留抽象性(如果子类的实现方法依旧是抽象的话)
C.接口的属性总是抽象的,你不写也是抽象的
D.关于抽象父类
a.内部方法论似乎也是要用abstract定义
b.方法论多采用public,因为需要被子类调用并具体化实现
不会真的有小憨批部署private吧!不会吧不会吧
2.static【静态类】
A.修饰内部类?
B.ASRC测试报告:静态类似乎是与【类】捆绑的
一个类的静态变量,对于所有同类的变量单元,都可以访问并且修改
C.对静态成员的操作,必须也是静态的状态?
D.静态成员变量只能用类名访问
import java.util.*;
import java.text.*;
import java.lang.*;class book {static int num;book() {num = 0;}public void add() {num++;}
}class ASRC {public static void main(String[] args) {Scanner sc = new Scanner(System.in);book a=new book();book b=new book();book c=new book();a.add();a.add();b.add();c.add();System.out.printf("%d",book.num);}
}
3.final【终章常量类】
A.申明时,即刻赋值,作为常量不更变,不可(被用于)修饰抽象类型
B.修饰【方法论】时 候,方法论作为父类被子类调用,子类无权修改或覆盖
C.修饰【静态成员域】,立即赋值
D.修饰【非静态成员域】,构造方法赋值,只能赋值一次
三、接口论
1 .关于【抽象类】和【接口】的区别与联系 的思考
1.抽象类
A.抽象类是针对父类无法给出具体方法的情况下使用,定义一种抽象共有的属性,等待子类引用时由子类具体实现
比如定义宠物会叫,但是每种宠物叫声是不一样的,所以printf暂时不动,等待明确子类是猫猫狗狗才知道叫声
B.对父类宠物动作引用时,会被下沉到调用具体的子类动物动作
比如定义父类宠物,子类猫猫,定义父类a=new猫猫,那么调用父类叫声的动作,实际上就下沉调用了猫叫
C.抽象类是用来继承的,抽象方法是等待被继承后重写的,不能new出实例
D.父类中可以固定一些通用方法为final,这样不会被子类覆盖
E.抽象类的本质是【父类具有的公共属性】,实践上需要由【子类调用具体化】
2.interface接口
A.满足一定的【规范】才可以【耦合】;模块之间的耦合?
Java接口:定义多个类之间共同的【行为规范】
B.视作一种特殊的抽象类,没有构造方法,不能实例化
成员域都是常量,定义时候就需要赋值,可以引用父接口
方法无具体实现,访问限制均定义为public(JDK8后可以有更多的限制权限选择)
C.示例?
D.一个类可以有多个【接口】(规范),调用接口规范的话,就要对其所有方法加以实现
多个无关的类可以实现同一个接口
比如:显卡可以启动终止,汽车也可以启动终止
E.借用接口可以实现多继承(多个接口、多个规范标准)
F.实现了对应接口的对象,可以通过接口进行访问
3.区别与联系
A.联系是二者都体现了【子类/具有接口的子类】具有的一定公共属性,都可以通过【父类/接口】来访问【子类/实现接口的子类】
B.区别是,抽象类作为父类调用只能搞一个,接口作为一种规范标准一个子类可以调用多个接口满足多个标准;接口的方法需要全部实现,抽象继承可以保留一些抽象方法不予以实现,让二级子类去实现
ASRC-接口标准创建测试
interface Base {//接口定义-基本动作void start();//作为多个类之间的【规范】void stop();
}class LookCard implements Base {public String name;public LookCard() {name = "苍穹之翼";}public void start() {System.out.printf("长虹显卡启动!");}public void stop() {System.out.printf("长虹显卡启动关闭!");}
}
class Car implements Base {public String name;public Car() {name = "黎明之翼";}public void start() {System.out.printf("汽车启动!");}public void stop() {System.out.printf("汽车爆胎!");}
}
/*【变量-->成员域】* 【非静态方法】访问【非静态变量】:a或this.a* 【非静态方法】访问【静态变量】:a或this.a或book.a(book类名)* 【静态方法】访问【静态变量】:a或book.a* 【静态方法】访问【非静态变量】:创建实例对象后通过对象访问* 方法论的访问 和 成员域的访问 类似* */
/** 静态变量可以被非静态的动作修改* 但不能被非静态的动作访问* 比如show动作如果是static 那么只能访问外区num和本区id,不能访问 外区域的ID* 如果去除static,那就可以访问外区ID,但是要加上this.id 来表示是外区ID* 因为内区也有个叫ID的变量(一般很少这样用,不会有哪个SB内外区ID写一个变量名称)* 太SB了* */
MD终于来作业了!作业分析报告
1.JDK: java开发工具 (java Development Kit)
JRE: java 运行环境 java Runtime Environment
JVM: java 虚拟机 java Vritual Machine
JDK包含JRE,JRE包含JVM
2. 子类重写的方法不可以拥有比父类方法更加严格的访问权限
3.类中定义了一个有参的构造方法,系统不会再提供无参的构造方法
4.Java的Object类没有父类,也称作【顶级父类】【祖始类】
5.接口的运用我们更关注方法,其成员变量将作为常数被调动,不存在【构造方法】
6.scanner next()不能捕获带有空格的字符串,nextLine可以捕获带空格的字符串
7.接口可以被 private 或 protected 修饰符修饰
8.子类视作父类的【拓展】而非【子集】
9.方法重载,方法名称相同,参数不同
10.非抽象的父类的子类也可以是抽象的
11.接口是抽象类,抽象类是不可以继承接口的、
12.接口被编译为独立的字节码文件
7-3 设计一个银行业务类
import java.util.Scanner;class Bank {public static String BankName;//银行名称private String name, password;//用户名+密码private double money;Bank() {BankName = "中国银行";money = 0;}public void create(String t1, String t2) {name = t1;password = t2;money = 0;//呜呜好穷啊}public static void welcome() {System.out.printf("%s欢迎您的到来!\n", BankName);}public static void welcome2() {System.out.printf("请收好您的证件和物品,欢迎您下次光临!\n");}public void deposit(String t, double m) {if (t.equals(password)) {money += m;System.out.printf("您的余额有%.1f元。\n", money);} else {System.out.printf("您的密码错误!\n");}}public void withdraw(String t, double m) {if (t.equals(password) && money >= m) {//密码正确+可以取出money -= m;System.out.printf("请取走钞票,您的余额还有%.1f元。\n", money);} else if (t.equals(password) && money < m) {System.out.printf("您的余额不足!\n");} else {System.out.printf("您的密码错误!\n");}}
}//【主函数调动区域】
public class ASRC {//极光·科研中心public static void main(String[] args) {Scanner sc = new Scanner(System.in);String t1, t2;double t3;Bank China = new Bank();//开户啦啦啦啦啦China.welcome();t1 = sc.next();t2 = sc.next();China.create(t1, t2);//正确密码+存钱t1 = sc.next();t3 = sc.nextDouble();China.deposit(t1, t3);//错误密码+取钱t1 = sc.next();t3 = sc.nextDouble();China.withdraw(t1, t3);//正确密码+可以取钱t1 = sc.next();t3 = sc.nextDouble();China.withdraw(t1, t3);//正确密码+不可以取钱t1 = sc.next();t3 = sc.nextDouble();China.withdraw(t1, t3);//告辞China.welcome2();}
}
6-2 动物自我介绍 静态动作调用
优势,调用父类animal,可以适应输入为子类的情况
import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner s = new Scanner(System.in);int i = s.nextInt();//先读入 小猫还是小狗
Java · PTA探险之旅相关推荐
- 从高考到程序员:我的程序探险之旅
就在今天下午,湖南省教育考试院公布了 2017 年湖南省普通高等学校招生全国统一考试的卷面成绩,我的微信也瞬间被各种分段统计表和喜报刷屏,每年的这个时候总是几家欢喜几家愁.六年前的 6 月 25 日, ...
- F#探险之旅(三):命令式编程(上)
F#系列随笔索引页面 在本系列的第二部分(函数式编程上.中.下)中,我们了解了如何使用F#进行纯粹的函数式编程.但是在一些情况下,比如I/O,几乎不能避免改变状态,也就是说会带来side effect ...
- java多线程并发之旅-34-性能与可伸缩性
概述 编写正确的程序很难,而编写正确的并发程序则难上加难.与串行程序相比,在并发程序中存在更多容易出错的地方. 那么,为什么还要编写并发程序? 线程是Java语言中不可或缺的重要功能,它们能使复杂的异 ...
- java多线程并发之旅-09-java 生产者消费者 Producer/Consumer 模式
生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产 ...
- 【从零开始的Java秃头之旅】03
从零开始的Java秃头之旅之Java篇 这几天主要学习了Java当中的异常这一概念,直接看图 java.lang.Throwable类是java语言中所有错误或异常的超类(父类),其主要可以分为两类: ...
- Java PTA题目——Chapter 3 Selections
Java PTA题目--Chapter 3 Selections 7-1 Convert Celsius to Fahrenheit(摄氏温度转换为华氏温度) Write a program that ...
- java多线程并发之旅-20-同步工具类。闭锁/栅栏/信号量/阻塞队列/FutureTask
同步工具类 同步工具类主要包括闭锁(如CountDownLatch),栅栏(如CyclicBarrier),信号量(如Semaphore)和阻塞队列(如LinkedBlockingQueue)等: F ...
- java探险,Java 探险之旅 (0)
Andy 合上电脑,摘下眼镜,揉了揉疲惫的双眼,倒头栽在了床上... ... "欢迎来到 Java 世界!从现在开始,你就是一名 Java 初级武士了,接下来的 Java 学习之旅不是安逸的 ...
- 一名Java大佬跳槽之旅,离开京东,14面面试经验和收获
2019年,打算离开京东,换个地方,然后开始了跳槽之旅. 先和boss们打了招呼,然后请假专心面试,2周内请假了6天左右时间,敲定了offer. 然后交接了2周,离开了我大京东. 一.面试情况 1.商 ...
最新文章
- JPPhotoBrowserDemo--微信朋友圈浏览图片
- 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战
- 软文:第三方支付技术的场景应用,支付技术延伸与国际化
- 计算机类农学类牧医类,考生注意!2017年高考报考类别确定
- vue项目统一响应_vue中使用$set实现深入响应式原理
- leetcode809. 情感丰富的文字
- linux下使用c进行线程操作
- [转]NopCommerce 多数据库方案
- 【TensorFlow-windows】(四) CNN(卷积神经网络)进行手写数字识别(mnist)
- 关于VS2005安装项目制作的三个参考文章链接
- 婚纱摄影五大标杆品牌告诉你,客资转化居然可以这么玩?
- 2022中山大学计算机技术专硕考研初试、复试经验帖
- matlab模拟静电场边值,静电场边值问题有限差分法的仿真分析
- 最全名企笔试题+算法题
- c语言的area的用法,area的用法说明
- python爬虫篇,零基础学爬虫之精华版
- 腾讯云服务器备案要多久?腾讯云小程序备案流程
- 解决方案:h5网页外部浏览器唤起微信分享,唤起微信面板,分享朋友圈方案,兼容大部分浏览器
- 爱我,是不是因为怜悯
- OEA 扩展属性系统 - 主要设计类图
热门文章
- cas113995-55-4/花菁染料1,1,2-三甲基-1H-苯并吲哚-7-磺酸
- [Shader] Shader Cookbook 创建你的第一个着色器[1]
- 74 ----平面直角坐标变换: 平移、旋转、伸缩
- ASP.NET Core 3.x 学习笔记(7)——Blazor
- python12306源码_春运了,Python大神分享爬取12306车票信息的例子,附抢票源码
- 【操作系统】3.进程管理
- 求二叉树根节点到叶节点的所有路径
- 安超云生态 | 安超云与数科网维联合推出“医疗全场景档案云共享解决方案”
- 【信号系统实验2】MATLAB—连续时间信号与系统的频域分析
- mysql workbench安装教程_MySql可视化工具MySQL Workbench使用教程