1. java编程题 本人新手,求详解。
先看下最终的结果吧,是不是你想要的?
其中,Student是父类,PostGraate是子类,继承自父类Student,Main是主类,用于创建对象以及把这些对象的功能调用起来。
---------------------------Student代码如下:------------------------------
/**
* 学生类
* @author 逍遥
*
*/
public class Student {
//学号
private int sId;
//姓名
private String sName;
//数学成绩
private double mathScore;
//计算机成绩
private double computerScore;
/**
* 获取学号
* @return
*/
public int getsId() {
return sId;
}
/**
* 设置学号
* @param sId
*/
public void setsId(int sId) {
this.sId = sId;
}
/**
* 获取姓名
* @return
*/
public String getsName() {
return sName;
}
/**
* 设置姓名
* @param sName
*/
public void setsName(String sName) {
this.sName = sName;
}
/**
* 获取数学成绩
* @return
*/
public double getMathScore() {
return mathScore;
}
/**
* 设置数学成绩
* @param mathScore
*/
public void setMathScore(double mathScore) {
this.mathScore = mathScore;
}
/**
* 获取计算机成绩
* @return
*/
public double getComputerScore() {
return computerScore;
}
/**
* 设置计算机成绩
* @param computerScore
*/
public void setComputerScore(double computerScore) {
this.computerScore = computerScore;
}
/**
* 输出成员变量(4个成员变量)的信息。
*/
public void print(){
System.out.println("学号:"+sId);
System.out.println("姓名:"+sName);
System.out.println("计算机成绩:"+mathScore);
System.out.println("数学成绩:"+computerScore);
}
}
---------------------------Student代码结束------------------------------
---------------------------PostGraate代码如下:------------------------------
/**
* 研究生类
* @author 逍遥
*
*/
public class PostGraate extends Student{
//导师姓名
private String tName;
//研究方向
private String ResearchDirection;
/**
* 获取导师姓名
* @return
*/
public String gettName() {
return tName;
}
/**
* 设置导师姓名
* @param tName
*/
public void settName(String tName) {
this.tName = tName;
}
/**
* 获取研究方向
* @return
*/
public String getResearchDirection() {
return ResearchDirection;
}
/**
* 设置研究方向
* @param researchDirection
*/
public void setResearchDirection(String researchDirection) {
ResearchDirection = researchDirection;
}
/**
* 研究生类重写父类的void print()方法,功能是输出成员变量(6个成员变量)的信息
*/
@Override
public void print() {
// TODO Auto-generated method stub
super.print();
System.out.println("导师姓名:"+tName);
System.out.println("研究方向:"+ResearchDirection);
}
}
---------------------------PostGraate代码结束------------------------------
---------------------------Main代码如下:------------------------------
import java.util.Scanner;
/**
* 主类
* @author 逍遥
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//用于获取从键盘上输入的信息
Scanner input=new Scanner(System.in);
//创建一个Student类的对象
Student student=new Student();
//从键盘上输入其属性信息
System.out.print("请输入学生的学号:");
student.setsId(input.nextInt());
System.out.print("请输入学生的姓名:");
student.setsName(input.next());
System.out.print("请输入学生的数学成绩:");
student.setMathScore(input.nextDouble());
System.out.print("请输入学生的计算机成绩:");
student.setComputerScore(input.nextDouble());
//并且通过其print方法输出这些信息;
student.print();
//创建一个PostGraate类的对象
PostGraate postGraate=new PostGraate();
//从键盘上输入其属性信息
System.out.print("请输入研究生的学号:");
postGraate.setsId(input.nextInt());
System.out.print("请输入研究生的姓名:");
postGraate.setsName(input.next());
System.out.print("请输入研究生的数学成绩:");
postGraate.setMathScore(input.nextDouble());
System.out.print("请输入研究生的计算机成绩:");
postGraate.setComputerScore(input.nextDouble());
System.out.print("请输入研究生的导师姓名:");
postGraate.settName(input.next());
System.out.print("请输入研究生的研究方向:");
postGraate.setResearchDirection(input.next());
//并且通过其print方法输出这些信息。
postGraate.print();
}
}
---------------------------Main代码结束------------------------------
=================知识点的简单总结=================
本题考察的知识点是面向对象的三大特性之一:继承。
Student为父类,包含了学号、姓名、数学成绩和计算机成绩4个属性,以及一个print()方法。
PostGraate 继承父类的时候,继承了父类中的所有方法,因为方法我都是用的public,而属性继承不了,因为我在父类中用了封装,所有属性都用private修饰了,想访问属性的话,必须通过get、set方法,这里,我重写了父类中的print方法,通过super.print();调用了父类中的print()方法。
最后就是Main类,提供了main方法作为入口函数,用于按要求声明这些对象以及去调用对象中的方法。
2. java编程,最后执行出现这个问题该怎么解决
你的Circle里的方法名字错误了printArea写成了prinArea少了t
3. java编程内存管理需要注意的问题
大家在进行程序系统维护的时候是否因为java编程的内存管理问题而无法快速解决导致系统出错呢?下面我们就一起来了解和学习一下,关于java编程内存管理都有哪些知识点。
程序计数器(了解)
程序计数器,可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作就是通过改变程序计数器的值来选择下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都要依赖这个计数器来完成。
Java虚拟机栈(了解)
Java虚拟机栈也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链表、方法出口信息等。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。
局部变量表中存放了编译器可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用和returnAddress类型(指向了一条字节码指令的地址)。
如果扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常。
本地方法栈(了解)
本地方法栈与虚拟机的作用相似,不同之处在于虚拟机栈为虚拟机执行的Java方法服务,而本地方法栈则为虚拟机使用到的Native方法服务。有的虚拟机直接把本地方法栈和虚拟机栈合二为一。
会抛出stackOverflowError和OutOfMemoryError异常。
Java堆
堆内存用来存放由new创建的对象实例和数组。(重点)
Java堆是所有线程共享的一块内存区域,在虚拟机启动时创建,此内存区域的目的就是存放对象实例。
Java堆是垃圾收集器管理的主要区域。java课程培训机构http://www.kmbdqn.com/发现由于现在收集器基本采用分代回收算法,所以Java堆还可细分为:新生代和老年代。从内存分配的角度来看,线程共享的Java堆中可能划分出多个线程私有的分配缓冲区(TLAB)。
4. java编程题目,求求大佬救救我
这个题考察的是面向对象三大特性之一的继承。
子类继承父类。
项目结构如何所示:
我是冯修远,如果我的答案对您有帮助的话,请采纳以帮助更多的人,如果还有其它的问题,也请关注我,私信我,谢谢!
5. JAVA程序编程问题
javac 后面的类名错误
应该是
javac MyFirstJavaProgram.java
对于类名较长的Java源文件
在编译时可以在命令提示符下通过Tab键来自动补齐
比如在你需要编译MyFirstJavaProgram.java这个源文件时
在命令提示符下输入javac My
然后按一下Tab键即可自动补齐
在同一目录下存在多个My开头的文件时
多次按下Tab键即可自动补齐不同的文件名
大体就是这样的了 可以多尝试尝试
6. 关于java编程的问题,希望大家帮忙解决
这就是classpath和path的问题!
一 jdk的安装
jdk的安装只需要根据提示安装就可以了。中途你可以选择自己喜欢的安装路径。安装之后,会有一个jdk1.5.0_05和一个jre1.5.0_05(假如是1.5的版本的话)文件夹。
然后开始设置环境变量。右键我的电脑--属性--高级--环境变量。在这里你可以选在在系统变量中添加,这样这台机器上的所有用户都可以使用这个环境变量。
添加CLASSPATH: .;D:\Program Files\Java\jdk1.5.0_05\lib\tools.jar;D:\Program Files\Java\jdk1.5.0_05\lib\dt.jar 注意,在最前面有一个“.”,不要忘记了。这里面的路径要换成你自己的安装路径。
添加JAVA_HOME: D:\Program Files\Java\jdk1.5.0_05 同样换成你自己的路径
7. 如何防止java编程语言序列化网络攻击
java编程一直以来都是互联网软件开发市场上的主流开发语言,同样的这也就导致了只要发生漏洞的话,所有用java编程开发的软件都会出现问题,下面云南java培训http://www.kmbdqn.com/就一起来了解一下,java编程语言中的序列化问题应该如何解决。
什么是序列化?
自从1997年发布JDK 1.1以来,序列化已经存在于Java平台中。
它用于在套接字之间共享对象表示,或者将对象及其状态保存起来以供将来使用(反序列化)。
在JDK 10及更低版本中,序列化作为java.base包和java.io.Serializable方法的一部分存在于所有的系统中。
序列化的挑战和局限
序列化的局限主要表现在以下两个方面:
出现了新的对象传输策略,例如JSON、XML、Apache Avro、Protocol Buffers等。
1997年的序列化策略无法预见现代互联网服务的构建和攻击方式。
进行序列化漏洞攻击的基本前提是找到对反序列化的数据执行特权操作的类,然后传给它们恶意的代码。
序列化在哪里?如何知道我的应用程序是否用到了序列化?
要移除序列化,需要从java.io包开始,这个包是java.base模块的一部分。常见的使用场景是:
实现Serializable接口和(可选)serialversionuid长整型字段。
使用ObjectInputStream或ObjectOutputStream。
使用严重依赖序列化的库,例如:Xstream、Kryo、BlazeDS和大多数应用程序服务器。
使用这些方法的开发人员应考虑使用其他存储和读回数据的替代方法。Eishay Smith发布了几个不同序列化库的性能指标。在评估性能时,需要在基准度量指标中包含安全方面的考虑。默认的Java序列化“更快”一些,但漏洞也会以同样的速度找上门来。
我们该如何降低序列化缺陷的影响?
项目Amber包含了一个关于将序列化API隔离出来的讨论。我们的想法是将序列化从java.base移动到单独的模块,这样应用程序就可以完全移除它。在确定JDK 11功能集时并没有针对该提议得出任何结果,但可能会在未来的Java版本中继续进行讨论。
通过运行时保护来减少序列化暴露
一个可以监控风险并自动化可重复安全专业知识的系统对于很多企业来说都是很有用的。Java应用程序可以将JVMTI工具嵌入到安全监控系统中,通过插桩的方式将传感器植入到应用程序中。
其他有用的安全技术
在进行维护时,可以不需要手动列出一长串东西,而是使用像OWASP Dependency-Check这样的系统,它可以识别出已知安全漏洞的依赖关系,并提示进行升级。也可以考虑通过像DependABot这样的系统进行库的自动更新。
虽然用意很好,但默认的Oracle序列化过滤器存在与SecurityManager和相关沙箱漏洞相同的设计缺陷。因为需要混淆角色权限并要求提前了解不可知的事物,限制了这个功能的大规模采用:系统管理员不知道代码的内容,所以无法列出类文件,而开发人员不了解环境,甚至DevOps团队通常也不知道系统其他部分(如应用程序服务器)的需求。