从基础概念全面认识Java

Java笔记——Java基础概念_java概念 每个变量有类型,每个表达式有类型,而且每种类型都是严格定义的。3、Java是一个面向对象的编程语言,所以编写程序的开始就是定义类的开始,如果类是public类型的类,则类名称必须和文件名称一致(不包括后缀,包括大小写)1、一般考虑开发效率的情况下可以使用IDE集成开发环境工具,目前练习一天采用的是记事本之类的文本编辑工具,Centos下使用的是vi/vim。简单数据类型代表单值,而不是复杂的对象Java是完全面向对象的,但简单数据类型却不是,它们类似于其他大多数非面向对象语言中的简单数据。 阅读详情
Java应该怎么学?Java能做什么?什么是Applet?什么是Servlet、Jsp、EJB?还有Webspere、Weblogic又是做什么的等等。之所以学员会有这些疑问,是因为大家普遍对Java相关概念听说的太多而了解的又相对少的缘故。

  学通Java语言需要一个过程,所有Java相关的概念都会在学习的过程中逐渐变得清昕。这个过程的开始就是要先学会标准的Java技术(J2SE),然后是学Java的简单Web运用,然后分布式运用,再以后对Java的移动技术运用就很容易理解了。

  以下是Java标准技术的一些要点

  一、Java的跨平台性,即一次编译到处运行

  简单地说Java的跨平台性就是指,编译后的Java程序可直接在不同的平台上运行而不用重新编译,这一特性使得Java随着Web应用的普及而迅速普及起来。而Java的跨平台性是如何实现的呢?这就要理解Java虚拟机和字节码的概念。

  实际上,编译后的Java代码并不是传统的二进制代码(如Windows下的.exe文件),而是Java字节码,这种字节码文件是不能直接在操作系统上执行的。要想在一个操作系统上运行一个Java程序必须有一个中间环节来负责将Java字节码解释成二进制码,这个中间环节就是Java虚拟机(简称JVM)。由于目前大多数操作系统已经实现了JVM,所以Java轻松实现跨平台性。

  二、面象对象技术

  Java全面支持面象对象技术,这体现在Class(类)是Java程序构成的基本单元,一个Java程序通常由许多Class组成,而且这些Class还会有一定的继承关系,Java支持Class的单继承,从而使类之间的继承关系更明确。继承的结果产生类的多态性,类的多态本质上讲就是可以用父类的引用访问继承类的实现(子类对象),类的这种多态性最终形成了组件对象模型的基础,即通过接口(父类)访问实现(子类)。

  三、Java中的I/O操作

  Java中以字节流(InputStream和OutputStream)、节符流(Reader和Writer)来分别读写二进制数据和字符数据,使用非常简单有效。Java类库中的File类不仅提供文件操作而且还包含文件夹操作,如下面这几行代码可以列出C盘根目录下的所有文件:

  File f=new File("c://");
  String [] m_dir= f.list();
  for(int i=0;i System.out.println(m_dir[i]);



   四、Java中的图形及事件处理

  可以用awt包或swing包的Java类来进行大部分的Java图形界面设计,下面的几行代码将产生一个200*200像素的窗体:

  Frame f=new Frame("Welcome");
  f.setSize(200,200);
  f.setVisible(true);


  默认情况下,Frame窗体的关闭按钮不起作用,这也是Java初学者迷惑的地方。为了使用户按下关闭按钮时能关闭Frame窗体,需要让这个窗体响应一个WindowEvent事件,具体的做法就是给这个窗体添加一个事件监听器对象,这个事件监听器就是WindowListener接口的实现。在上面的代码中插入如下代码就可以关闭窗体:

  f.addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent e){
  System.exit(0);
  }
  }


  这里用到一个无名内部类,无名内部类是Java中内部类的一种灵活运用方式。

五、Java中线程及同步控制

  线程概念的引入是为了实现并行处理,从而提高程序的效率。Java中的线程实现非常简单,可以用两种方式来创建线程,一种是实现Runnable接口,另一种是继承Thread类重写run()方法。两种方式唯一的不同就是前者保留了继承一个类的可能(因为Java只支持类的单继承,但接口没有此限制)。

  永远都用start()方法来启动一个线程,线程类中的run()可以被直接调用,但决不是启动一个线程,二者有着本质的区别。

  用同步控制关键字synchronized来保护线程敏感数据,synchronized块中的内容可以保证同一时刻只能被一个线程访问,所以其中的数据是线程安全的。

  用Object类中的wait()和notify()方法可以实现线程间交互,但要记住wait()和notify()方法只有发生在同一个对象上才能真正实现线程间交互。被某一对象wait()方法阻塞的线程需要另外一个调用了同一对象notify()的线程干预才能恢复运行。notify()方法一次唤醒一个被wait()方法阻塞的线程,notifyAll()方法可以一次唤醒所有被wait()方法阻塞的线程。

  六、Java本地方法(native方法)的实现

  Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。

  可以将native方法比作Java程序同C程序的接口,其实现步骤:

  1、在Java中声明native()方法,然后编译;
  2、用javah产生一个.h文件;
  3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
  4、将第三步的.cpp文件编译成动态链接库文件;
  5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。

  上述所提及的一些Java技术具有一定的普遍性,它们基本上是在Java各个方面的运用中都需要掌握的术。实际上Java的运用非常广泛,而且每个方面都需要遵循不同的规范。以下是对Java应用的简要介绍

  (一)理解Java SDK的三个版本

  Java SDK Micro Edition (J2ME)

  用于开发掌上电脑、手机等移动通信设备上使用的应用程序。并不是所有的移动设备都支持Java,只有具备J2ME运行环境(JVM+J2ME API)的设备才能运行Java程序。J2ME的集成开发工具(通常都有带有一些访真器)有 Sun 的J2ME Wireless Toolkit 、IBM的Visul Age Micro Edition 等。

  Java SDK Standard Edition(J2SE)

  主要用于开发一般台式机应用程序。我们平时所说的JDK就指J2SE,而我们学Java就是从学习J2SE开始的。

  Java SDK Enterprise Edition (J2EE)

  用于开发分布式的企业级大型应用程序。其中的核心是Entetprise Java Beans(EJB,分布式Java组件)的开发。

  (二)Java小程序 (Applet)

  Java小程序是一个继承了Applet类并重写了init()、paint()、stop()等方法的的Java类,它被布署在Web服务器(如IIS)上,当客户端请求Web页时,浏览器从Web服务器上将其下载到本地客户端,然后,浏览器创建该Applet类的实例并调用其init()方法,从安全角度考虑,Applet没有访问本地文件的权限。由于Applet是被浏览器执行的,所以Applet不需要一个main()方法。实际上,除了Java Application之外,所有其它Java应用都不需要一个main()方法。

  (三)服务器端Java小程序 (Servlet)

  Servlet也是一个Java类,和Applet形成对比,Servlet是运行于服务器端的Java小程序,而且Servlet需要一个单独的Web服务器(如Tomcat)做容器。除此之外,Servlet中用到的一些类(如HttpServlet)并不包含在J2SE API中,所以需要将Servlet.jar(在Tomcat的commonlib文件夹下)加到环境变量中去。下面是一个简单的Servlet例子:

public class Myservlet extends HttpServlet{

  public void doGet(HttpServletRequest request,HttpServletResponse response)
  {
  try{
  response.setContentType("text/html");
  PrintWriter out=response.getWriter();
  out.println("");
  out.println("");
  out.println("Hello world");
  out.println("");
  out.println("");
  }catch(IOException e){}
  }
  }
  将这个Class文件编译后放至TomcatwebappsexamplesWEB-INFclasses下,然后在浏览器地址栏里输入http://127.0.0.1:8080/examples/servlet/Myservlet即可看到 Hello world出现在浏览器中。

  (四)Java Server Page (JSP)

  同Servlet相似的是,JSP运行于Web服务器端,并且也需要Tomcat之类的容器。不同的是,由于JSP是将Java代码嵌在html标记里(同ASP一样用),JSP的界面设计同后台开发人员的工作可以有效分离。可以想像让开发人员用Servlet写一个花捎的Web页面有多困难,所以JSP+Servlet混合Web应用是比较理想的选择。

  看起来JSP同ASP的实现机制大同小异,其实也存在着本质的区别。所有的ASP页面都是解释运行的,而JSP页在第一次被请求时会被编译,再以后的客户请求都是直接运行服务器上的.class文件(在Tomcat的Work文件夹下),所以JSP要比ASP速度上快许多。

  (五)Java Beans

  Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。

  (六)Enterprise Java Beans (EJB)

  Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

  这种模型很像COM+管理器,其实EJB容器正是起到COM+管理器的作用,只是EJB组件相对COM组件来说更易用、更安全。

  总的说来,Java作为面象对象技术的一个代表,在当今商业应用中更容易开发出高效的、多层的分布式应用程序,而且,由于Java技术有很强的健壮性和易用性,加上同UML应用的结合,开发一个商业应用软件的周期会大大缩短,所以Java会有不错的前景。

从FinFET到NanoSheet:一文看懂TSMC制程技术的架构革命与性能飞跃 本文深入解析了TSMC从FinFET到NanoSheet的制程技术架构革命。FinFET通过三维立体结构解决了短沟道效应,而NanoSheet采用环绕栅极设计,实现了更强的静电控制与设计灵活性,结合EUV光刻技术,共同推动了芯片性能与能效的飞跃,为下一代AI与高性能计算奠定基石。 阅读详情

相关推荐

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-差分信号

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-单端信号详细介绍了单端信号如何进行TDR仿真分析,下面介绍如何对差分信号进行TDR分析,还是以下图为例进行分析。Impedance是时域阻抗曲线,也是最主要的观测指标,注意:impedance曲线的时间刻度不是延时,延时=时间刻度/2,因为TDR测量的是用一来一回的原理去测量的。Use Lossy peeling 默认不勾选,勾选的话代表同时仿真无损和有损方案,不勾选代表仅仿真有损方案。

weixin_54787054的博客 825

世界上最难的5种编程语言

世界上最难的5种编程语言 每个程序员都熟悉许多编程语言。许多编程语言都是高级的,它们的语法是人类可读的。然而,也有一些低级语言,对于一个人来说,读起来很困难,但是可以理解。然而,您是否遇到过一种既不可读又不可理解的编程语言? 有一些编程语言被称为“深奥编程语言”或“esolang”。这些语言被设计用来测试计算机编程语言设计的边界。这些类型的语言不考虑可用性,目的是去除和替换常规...

CHK的博客 5万+

全国IT行业招聘数据集(33列,110177条记录)CSV

包含字段:_id、检索城市、检索二级职位类别、检索三级职位类别、岗位id、公司id、岗位名、招聘者名称、招聘者职位、工作地址、岗位描述、公司名称、岗位标签、岗位福利待遇、公司标签、工作地区、一级行政单位、二级行政单位、三级行政单位、薪资文本、最大薪资、最小薪资、发布日期、工作年限要求、学历要求、公司行业、公司类型、公司规模、岗位发布-lat、岗位发布-lon、是否全职、专业相关要求1、专业相关要求2

Java基础概念汇总

Java基础

随风而欲的博客 1207

java基础概念

基本概念 学习java基础知识首先清楚下面四个概念: 对象:对象就是类的实例,包含状态和行为 类:描述一类对象有的行为和状态 方法:方法还就是行为,一个类包含很多方法 实例变量:每个对象都会有独特的实例变量,对象的状态有这些实例对象的值决定,比如传入的参数 编写 Java 程序时,应注意以下几点: 大小写敏感:Java 是大小写敏感的 类名:类名的首字母应该大写,如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 方法名:所有的方法名都应该以小写字母开头。如果方

csdn_1_10086的博客 2361

Java基础概念

*关键字:**在Java语法中有特殊语法意义的单词,如class,static,String**保留字:**指现有Java版本

jiey0407的博客 654

java基础概念练习题

一、 选择题 以下选项中,哪些属于合法的标识符?(多选)(D、A ) A、Hello_World B. class C.123username D.username123 下列哪些是合法的标识符(多选)( C 、D A ) A、applet B、Applet C、4D、4 D、4D、$44 下列哪个不是Java的关键字( D ) A、else B、public C、int D、radius byte类型数据中最大的数据为( A ) A、1

又菜又想学java的博客 4850

java的重要性_Java重要的基础概念,一定要牢牢记住

学好java最重要的就是基础概念,就像建房子,基础打好了,才能建起万丈高楼,所以,我们先从基础开始,从基础概念开始。关键字publicclassHelloWorld {publicstaticvoidmain(String[] args) {System.out.println("Hello World.");}}上面的粗体字什么意思呢?java中把它称为关键字。在java语言中已经被赋予特定意义...

weixin_30697511的博客 465

Java基础概念语法

Java基础概念语法 注释 单行注释 //行注释说明 多行注释 /* 多行注释说明 */ 文档注释 /** *@author 程序的作者 *@version 源文件的版本 *@param 方法的参数说明信息 *文档注释说明 */ 关键字 类别 关键字 ...

weixin_30650039的博客 180

JAVA学习——JAVA基础概念

2)若要定义long类型的变量,在数据值的后面需要加一个L作为后缀(大写);c.字符串类型:用双引号扩起来的内容,如:“HelloWorld”,“黑马”d.字符类型:用单引号扩起来的,内容只有一个,如:‘A’,‘a’,‘男’1.概念:在程序的执行过程中,其值有可能发生改变的量(数据)b.小数类型:带小数点的数字,如:13.14,-5.21。e.布尔类型:布尔值,表示真假,如:true,false。a.整数类型:不带小数点的数字,如:666,-88。f.空类型:一个特殊的值,空值,如:值是:null。

2301_78781676的博客 657

Java开源在线考试系统怎么选?从技术选型到落地部署的完整指南

Java开源在线考试系统怎么选?本文从技术选型、核心功能、部署运维、二次开发等维度,梳理了Java开源在线考试系统的选型要点。

麦塔在线考试培训系统 348

大数据 之 Snappy

【代码】大数据 之 Snappy。

zhixingheyi_tian的博客 174

Spring WebFlux 适配达梦新方案|dm‑r2dbc:Netty 异步传输的实验性 R2DBC 驱动

dm‑r2dbc 是面向达梦 DM8 的实验性 R2DBC 驱动,混合架构:Netty 异步网络传输层 + JDBC 驱动协议编解码复用。核心思路:不去逆向达梦私有协议二进制报文,直接复用达梦 JDBC 驱动内部已经成熟的编解码逻辑,通过反射替换 JDBC 内部默认阻塞 Socket 传输实现,替换为 Netty NIO 异步通道,实现真正异步非阻塞网络 IO。

jinyuttt的专栏 290

41面向对象(高级)-抽象类

当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。

weixin_52770734的博客 374

Spring AI RAG管道构建与优化

<think>我们只需要根据给定的内容生成摘要(≤150字)。给定内容较长,但核心是Spring AI RAG管道构建与优化,涉及文档加载、分割、嵌入、存储、检索、生成等。摘要应高度概括。 注意用户要求“根据以下内容,生成≤150字的文章摘要”。内容提供了代码等细节,但摘要需抓住要点。 写出摘要,字数≤150。</think>摘要:本文深入讲解Spring AI RAG管道的构建与优化,涵盖文档加载、分割、嵌入、存储、检索到生成的全流程。详细展示了多源文档加载(PDF、网页、JSON)、多种分割策略(按页、

BADAO_LIUMANG_QIZHI的博客 203

商超智能运营如何落地?从系统架构到实战避坑的完整技术路径

3. **多端交互展示层**:需覆盖顾客使用的**小程序、APP及H5公众号**,以及员工使用的管理后台。答:在应用层引入**适配器模式**。在项目启动时,应强制要求供应商或自研团队产出**部署文档**(含环境变量清单)和**二次开发文档**(含核心流程时序图),确保后续维护不受限于个人。- **多租户插件**:MyBatis Plus的`TenantLineInnerInterceptor`可实现SQL层面的自动拼接`store_id`条件,防止开发者因SQL编写疏漏导致的数据越权。

weixin_56812938的博客 503

Java深入解析篇二十之JavaStream API详解

Stream(流)是引入的数据处理抽象,位于包。它表示从数据源产生的元素序列,并支持对其进行函数式、聚合式操作。不是集合:流不存储数据,只描述对数据的计算;不是 IO 流:与无关;惰性管道:中间操作只是登记,终端操作才触发实际计算。// 命令式写法(对照) // List<String> r = new ArrayList<>();

萧瑟余晖的博客 347

电商推返模式的技术架构与系统落地实践

成功的电商推返模式系统,本质是。

weixin_42804741的博客 189

大模型API并发限流解析:中科热备多Key轮换工程方案

灾备与数据保护技术实战:CDP持续保护、数据库备份、异地容灾架构等核心技术深度解析。

2501_92899622的博客 325
上一篇: Robbin关于App class loader的总结(zt)
下一篇: Java经典网站
hdczf
博客等级 码龄24年 1粉丝 16原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值