「java核心逻辑」java核心内容
今天给各位分享java核心逻辑的知识,其中也会对java核心内容进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口。
- 2、java 计算器代码
- 3、Java学习有哪些重点和难点
- 4、在java开发中什么是业务逻辑?
- 5、学Java需要什么基础
- 6、Java的核心技术有哪些?
如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口。
首先分析需要的GUI技术
java中一般使用swing 和awt技术来实现图形界面,Swing组件较多,功能比较强大,所以这里使用Swing组件来实现。窗口使用(JFrame),按钮使用(JButton)。
设想一个符合题目需求的场景
两个窗口关联并且跳转,最常见的场景就是登陆了。
登陆窗口,输入用户名和密码,如果成功就跳转到主窗口
核心逻辑,跳转窗口的关键代码
一般可以隐藏本窗口(setVisible(false);),显示新窗口来实现窗口的跳转。
但是隐藏窗口,会在后面浪费系统资源。
如果不再使用该窗口,应该彻底销毁(dispose();),释放系统资源
代码和注释
LoginFrame 类
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//LoginFrame 登陆窗口 功能 实现用户登陆 ,如果成功就跳转
//LoginFrame 继承于窗口类, 并实现ActionListener接口
public class LoginFrame extends JFrame implements ActionListener {
// 申明需要的组件
JButton jb1, jb2;//按钮
JTextField jtf1;//文本框
JPasswordField jpf1;//密码框
public LoginFrame() {
// 窗口属性的设置
setTitle("登陆窗");// 窗口标题
setSize(300, 180);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口则退出虚拟机
setLayout(new FlowLayout());// 设置布局流式布局
JPanel jp = new JPanel(new GridLayout(4, 1));// 设置面板为表格布局4行1列
// 第一行
JPanel jp1 = new JPanel();
JLabel jl1 = new JLabel("账号 ");
jtf1 = new JTextField(12);
jp1.add(jl1);
jp1.add(jtf1);
jp.add(jp1);
// 第二行
JPanel jp2 = new JPanel();
JLabel jl2 = new JLabel("密码 ");
jpf1 = new JPasswordField(12);
jp2.add(jl2);
jp2.add(jpf1);
jp.add(jp2);
// 第三行
JPanel jp3 = new JPanel();
jb1 = new JButton("登陆");
jb1.addActionListener(this);// 添加动作响应器
jb2 = new JButton("重置");
jb2.addActionListener(this);// 添加动作响应器
jp3.add(jb1);
jp3.add(jb2);
jp.add(jp3);
// 第四行
JPanel jp4 = new JPanel();
JLabel jl3 = new JLabel("提示: 账号 admin 密码 123");
jl3.setForeground(Color.DARK_GRAY);
jp4.add(jl3);
jp.add(jp4);
add(jp);
}
// 动作响应
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理
if (cmd.equals("登陆")) {
String id = jtf1.getText();// 取得用户名
String key = new String(jpf1.getPassword());// 取得密码
if (id.equals("admin") key.equals("123")) {// 判断是否登录成功
// 如果登录成功
setVisible(false);// 本窗口隐藏,
new MainFrame(id).setVisible(true);// 新窗口显示
dispose();//本窗口销毁,释放内存资源
} else {
//如果登录失败 弹出提示
JOptionPane.showMessageDialog(this, "用户名或者密码错误.", "通知", JOptionPane.ERROR_MESSAGE);
clearText();//清空文本框 密码框的输入
}
} else if (cmd.equals("重置")) {
clearText();
}
}
private void clearText() {//清空文本框, 密码框的输入
jtf1.setText("");
jpf1.setText("");
}
//main方法, 程序的入口
public static void main(String[] args) {
new LoginFrame().setVisible(true);//创建登录窗口,并可见
}
}
MainFrame类
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainFrame extends JFrame {
public MainFrame(String name) {
setTitle("主窗口");//标题
setSize(300, 260);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel jp = new JPanel();
JLabel jl1 = new JLabel("欢迎");
JLabel jl2 = new JLabel(name);
jl2.setForeground(Color.BLUE);//设置文本颜色
JLabel jl3 = new JLabel("使用系统.");
jp.add(jl1);
jp.add(jl2);
jp.add(jl3);
add(jp, BorderLayout.NORTH);
JTextArea jta = new JTextArea();
jta.setLineWrap(true);
jta.append("消息提示");
jta.append(" 消息!通知~!");
JScrollPane jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(jsp);
JPanel jp2 = new JPanel();
JButton jb = new JButton("退出");
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);//退出
}
});
jp2.add(jb);
add(jp2,BorderLayout.SOUTH);
}
}
运行效果图
java 计算器代码
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
/**
* 我的计算器。Cheshi 继承于 JFrame,是计算器的界面
c*/
public class Cheshi extends JFrame {
private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);
private JTextField textbox = new JTextField("0");
private CalculatorCore core = new CalculatorCore();
private ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
String label = b.getText();
String result = core.process(label);
textbox.setText(result);
}
};
public Cheshi(String title) throws HeadlessException {
super(title); // 调用父类构造方法
setupFrame(); // 调整窗体属性
setupControls(); // 创建控件
}
private void setupControls() {
setupDisplayPanel(); // 创建文本面板
setupButtonsPanel(); // 创建按钮面板
}
// 创建按钮面板并添加按钮
private void setupButtonsPanel() {
JPanel panel = new JPanel();
panel.setBorder(border);
panel.setLayout(new GridLayout(4, 5, 3, 3));
createButtons(panel, new String[]{
"7", "8", "9", "+", "C",
"4", "5", "6", "-", "CE",
"1", "2", "3", "*", "", // 空字符串表示这个位置没有按钮
"0", ".", "=", "/", ""
});
this.add(panel, BorderLayout.CENTER);
}
/**
* 在指定的面板上创建按钮
*
* @param panel 要创建按钮的面板
* @param labels 按钮文字
*/
private void createButtons(JPanel panel, String[] labels) {
for (String label : labels) {
// 如果 label 为空,则表示创建一个空面板。否则创建一个按钮。
if (label.equals("")) {
panel.add(new JPanel());
} else {
JButton b = new JButton(label);
b.addActionListener(listener); // 为按钮添加侦听器
panel.add(b);
}
}
}
// 设置显示面板,用一个文本框来作为计算器的显示部分。
private void setupDisplayPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBorder(border);
setupTextbox();
panel.add(textbox, BorderLayout.CENTER);
this.add(panel, BorderLayout.NORTH);
}
// 调整文本框
private void setupTextbox() {
textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐
textbox.setEditable(false); // 文本框只读
textbox.setBackground(Color.white); // 文本框背景色为白色
}
// 调整窗体
private void setupFrame() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 当窗体关闭时程序结束
this.setLocation(100, 50); // 设置窗体显示在桌面上的位置
this.setSize(300, 200); // 设置窗体大小
this.setResizable(false); // 窗体大小固定
}
// 程序入口
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Cheshi frame = new Cheshi("我的计算器");
frame.setVisible(true); // 在桌面上显示窗体
}
}
/**
* 计算器核心逻辑。这个逻辑只能处理 1~2 个数的运算。
*/
class CalculatorCore {
private String displayText = "0"; // 要显示的文本
boolean reset = true;
private BigDecimal number1, number2;
private String operator;
private HashMapString, Operator operators = new HashMapString, Operator();
private HashMapString, Processor processors = new HashMapString, Processor();
CalculatorCore() {
setupOperators();
setupProcessors();
}
// 为每种命令添加处理方式
private void setupProcessors() {
processors.put("[0-9]", new Processor() {
public void calculate(String command) {
numberClicked(command);
}
});
processors.put("\\.", new Processor() {
public void calculate(String command) {
dotClicked();
}
});
processors.put("=", new Processor() {
public void calculate(String command) {
equalsClicked();
}
});
processors.put("[+\\-*/]", new Processor() {
public void calculate(String command) {
operatorClicked(command);
}
});
processors.put("C", new Processor() {
public void calculate(String command) {
clearClicked();
}
});
processors.put("CE", new Processor() {
public void calculate(String command) {
clearErrorClicked();
}
});
}
// 为每种 operator 添加处理方式
private void setupOperators() {
operators.put("+", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.add(number2);
}
});
operators.put("-", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.subtract(number2);
}
});
operators.put("*", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.multiply(number2);
}
});
operators.put("/", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.divide(number2, 30, RoundingMode.HALF_UP);
}
});
}
// 根据命令处理。这里的命令实际上就是按钮文本。
public String process(String command) {
for (String pattern : processors.keySet()) {
if (command.matches(pattern)) {
processors.get(pattern).calculate(command);
break;
}
}
return displayText;
}
// 当按下 CE 时
private void clearErrorClicked() {
if (operator == null) {
number1 = null;
} else {
number2 = null;
}
displayText = "0";
reset = true;
}
// 当按下 C 时,将计算器置为初始状态。
private void clearClicked() {
number1 = null;
number2 = null;
operator = null;
displayText = "0";
reset = true;
}
// 当按下 = 时
private void equalsClicked() {
calculateResult();
number1 = null;
number2 = null;
operator = null;
reset = true;
}
// 计算结果
private void calculateResult() {
number2 = new BigDecimal(displayText);
Operator oper = operators.get(operator);
if (oper != null) {
BigDecimal result = oper.process(number1, number2);
displayText = result.toString();
}
}
// 当按下 +-*/ 时(这里也可以扩展成其他中间操作符)
private void operatorClicked(String command) {
if (operator != null) {
calculateResult();
}
number1 = new BigDecimal(displayText);
operator = command;
reset = true;
}
// 当按下 . 时
private void dotClicked() {
if (displayText.indexOf(".") == -1) {
displayText += ".";
} else if (reset) {
displayText = "0.";
}
reset = false;
}
// 当按下 0-9 时
private void numberClicked(String command) {
if (reset) {
displayText = command;
} else {
displayText += command;
}
reset = false;
}
// 运算符处理接口
interface Operator {
BigDecimal process(BigDecimal number1, BigDecimal number2);
}
// 按钮处理接口
interface Processor {
void calculate(String command);
}
}
Java学习有哪些重点和难点
Java学习第一个重点难点——JDK开发环境安装
首先是Java开发环境的各种版本选择,一般情况下我们需要从JDK官网下载最新版本的JDK文件(但是还需要注意你所学习的图书或者视频使用的是哪个版本的JDK),根据自己电脑的系统选择对应的安装包。
其次在安装过程中一定要设置环境变量的路径,这个过程非常关键,会直接影响你的JDK是否可以正常使用。最终还要在“命令提示符”中验证,是否已经真正地完成了JDK的安装。
Java学习第二个重点难点——变量的理解
变量是入门Java开发的首个概念性的思维转变,目前所有的编程语言都是完成人类语言到机器语言的转变过渡方式。变量则是贯穿整个Java编程开发的核心知识点。例如变量的各种不同的类型、变量的命名规则、变量之间的转换、变量赋值时的初始化的理解,变量的相关运算符的使用等等。
Java学习第三个重点难点——OOP面向对象编程思想
Java作为高级编程语言,最大的特点就是采用面向对象编程思想,与面向过程的编程方法相比,OOP能够大幅度的提高代码运行效率。在面向对象中需要重点理解类、对象、抽象类、接口、封装、集成和多态的概念。在Java编程开发中,大部分实战项目都是采用面向对象的思维进行开发,因此重点理解和掌握OOP是学习Java编程开发的重中之重。所以掌握面向对象的概念并且能够熟练运用是一个Java开发工程师最基本要求。在学习过程中,应该尽可能多地去进行实操练习。
Java学习第四个重点难点——多线程
在大型项目中,多线程是众多Java程序员的技术门槛,单纯的概念理解可能并不是很困难,最重要的是要掌握多线程的核心原理以及多线程的实际应用。包括多线程的创建、现成的 生命周期、锁的概念、线程安全等问题。在实际编程开发中,多线程是出现BUG最多的位置,而避免BUG出现的最好方法就是深刻理解多线程的原理,总结归纳多线程经常出现异常的位置,并快速响应找到对应的解决方案。
Java学习中的第五个重点难点——异常
异常是每一个Java开发者不可避免的问题。包括Error、Runtime Exception、Exception、throw自定义异常等等。之前接触到很多同学遇到异常就会手忙脚乱,其实大部分异常都是可以通过调式解决掉,也有很多异常是由于开发者的编码错误引发的,因此遇到异常首先要分析异常产生的原因,逐层去调式获取引发异常的位置,然后不断的总结归纳引发异常的各种原因,在学习工作中不断的提高自己解决问题的能力。学习异常的方法有两种,一种就是系统地去了解各种异常的种类,并理解其引发异常的原因,在实际遇到问题的时候先套用方法,然后再寻找不同的解决方案。另外一种方法就是学习中进行大量的练习,在练习过程中遇到异常后根据实际情况去排查异常产生原因并总结归纳。
Java学习中的其他重点难点
虽然在文中没有重点提到循环、构造函数、I/O和序列化、各种设计模式等等关键内容。对于初学者来说,每一个新的知识点都有一个理解到运用的过程,最重要的是能在学习中掌握所学知识点的底层原理和实际应用。Java编程开发作为一门实操性非常强的技术,单纯的理论知识无法支撑你的快速就业,能够真正动手编码并实现相应的功能才是学习Java最终的目的。
在java开发中什么是业务逻辑?
Java开发中的业务逻辑就是处理数据的逻辑。学习Java开发,推荐千锋教育,致力于打造中国互联网全产业链人才服务平台,总共开设13大热门课程,每月更新前沿技术,业内强师授课,只为高品质教学,教学大纲紧跟企业需求,值得信赖。
不一样的项目有不一样的功能,不一样的功能须要不一样的实现,实现这些核心功能的代码就叫业务逻辑。业务逻辑是指一个实体单元为了向另外一个实体单元提供服务,应该具有的规则与流程。业务逻辑的内容包括四个部分:领域实体,定义了业务中的对象,对象有属性和行为;业务规则,定义了须要完成一个动做,必须知足的条件;数据完整性,某些数据不可少;工做流,定义了领域实体之间的交互关系。
想要了解更多有关于java开发的相关问题,推荐咨询千锋教育。千锋教育面授课程包括:HTML5大前端培训、Java+分布式开发培训、Python人工智能+数据分析培训、全领域实战UI/UE设计设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、网络安全培训、区块链培训、影视剪辑包装培训、游戏原画培训、全媒体运营培训等,实力强大,欢迎咨询。
学Java需要什么基础
目前Java的就业形势看起来是相当不错的,对于那些想通过学习一门编程语言来丰富自己的生存技能的人,学习Java是个不错的选择,可是对于一点编程学习经验都没有的人来说,学Java需要什么基础?该如何学习呢?
其实对于有一定的编程语言基础,当然学起Java知识会很容易,如果你是零基础,学起来可能会有一些困难,但只要有一定的逻辑思维有系统的Java培训学习,学习起来也不是很难。因为Java的核心思维就是面向对象的概念,只要你能理解了这部分知识,其他就不是问题了。
学Java需要什么基础?下面小编就给大家介绍一下学Java需要用到的一些基础知识。
1、要具备一些基础的英语基础。
学编程离不开与英语打交道。不少英语不好的同学就会担心了,自己的英语基础不好,是不是就学不好Java了。虽然代码里面都是英文字母,但是学起来真的不是很难。代码里面的英文都是固定的标签,只要你记熟那些固定标签,敲起代码来就不是障碍。而且现在的编译器越来越先进,只要你打出首字母,下拉框里你就能选择你需要的英文标签。
2、面向对象的知识。
Java是一个面向对象的开发语言,因此熟悉面向对象知识对学习Java很有必要。你需要了解:什么是对象,什么是类;什么是封装,什么是多态,什么是继承;什么是抽象类,什么是接口。了解了概念后,你还需要这些概念是如何体现的,如类和对象有什么区别?类是如何封装的?动力节点Java教学老师会用实战项目知识向大家生动地讲解相关的Java知识。
3、Java语法的知识。
如果你有C++等面向对象语言的开发经验,你只需简单的翻看一下介绍Java的相关书籍就可以了。
零基础学习Java开发也是没有问题的,选择靠谱的Java培训机构很重要,昆明北大青鸟采用“因材施教,分级培优”满足不同基础学员的需求。
免责声明:内容来源于公开网络,若涉及侵权联系尽快删除!
Java的核心技术有哪些?
java学习中的13个核心技术分享给你
1. JDBC(Java Database Connectivity):
JDBC API为访问不同的数据库提供了一种统一的途径象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外JDCB对数据库的访问也具有平台无关性。
2. JNDI(Java Name and Directory Interface):
JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统或应用服务器中的对象。
3. EJB(Enterprise JavaBean):
J2EE技术之所以赢得媒体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。
4. RMI(Remote Method Invoke):
正如其名字所表示的那样,RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。
5. Java IDL/CORBA:
在Java IDL的支持下开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并使之可在CORBA ORB中展开,或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径通过它Java可以被用于将你的新的应用和旧的系统相集成。
6. JSP(Java Server Pages):
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
7. Java Servlet:
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。
8. XML(Extensible Markup Language):
XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。
XML的发展和Java是相互独立的,但是它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,您可以得到一个完美的具有平台独立性的解决方案。
9. JMS(Java Message Service):
MS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。
10. JTA(Java Transaction Architecture):
JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。
11. JTS(Java Transaction Service):
JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。
12. JavaMail:
JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。
13. JAF(JavaBeans Activation Framework):
JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象或者转换自Java对象。大多数应用都可以不需要直接使用JAF。
关于java核心逻辑和java核心内容的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。