精华内容
下载资源
问答
  • java核心技术精讲

    万人学习 2016-12-31 18:44:40
    本课程主要读者全面细致的讲解Java编程的所有核心知识,从基础语法、到面向对象以及Java的实际应用进行完整讲解。官方QQ群:612148723。
  • 9天速学Java核心类库和设计

    万人学习 2019-05-06 13:55:26
    本课程系统地讲解了Java核心类库和设计,为你的攻城狮之路打下坚实基础。
  • Java核心:第一章:Java反射

    万次阅读 多人点赞 2020-05-11 11:04:34
    所以在java 中,这个类定义的创建模板就是我们 java 语言中的 java.lang.Class 类。在 Class 的模板中,我们也可以找到大家耳熟能详的模板类如Method,Constructor,Field ... 深入 Class 内部 通过上面的内容,我们...

    首先分享一篇关于反射的博文,因为我发现这篇博文写的很详细,地址是:https://blog.csdn.net/sinat_38259539/article/details/71799078

    然后开始我的表演:

    首先学习反射之前,我要提出疑问:

    反射是个什么东西?它是用来做什么的?平时的应用场景有哪些?为啥要用它?它有什么优缺点?它的工作原理是什么?我怎么使用它?

    这么多的问题,这是在挑衅啊,既然如此,那么我想起来宫本的那句:想挑战的,一个一个来

    先解决第一个问题:

    此为何物

    百度看了看反射的介绍:

    超过二秒后,我表示看不下去了,就不能简单点吗?这是给人看的吗?像我这种人,是看不下去的。

    我们来一句话定义反射:

    反射就是把java类中的各种成分映射成一个个的Java对象

    不理解这句话什么意思?没关系,在我百度了几分钟后,找到三种解释:

    解释一:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。

    解释二: 说反射先聊聊正射

    反射机制是不知道类是什么样的,它是根据类的类名,去获取一个实例,然后根据方法名去执行方法。好比说,一般情况下画一只老虎,问我得先知道老虎长什么样子才能画出来;有了反射机制,我只要知道“老虎”这答个名字就能画出来。

    解释三:假如我们有两个程序员,一个程序员在写程序的时候,需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代码能否通过编译呢?这是不能通过编译的。利用Java反射的机制,就可以让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。

    解释四:如果你是方法,快递员是虚拟机。快递员通过地址查地图找你的叫反射调用。直接去找你的叫直接调用。

    现在我们基本已经了解什么是反射了,接着需要将第二个问题搞定:

    该物用途

    然后接着百度:

     用途太多,概念也很多,我需要一句话就可以解释它的作用或者用途:

    反射可以赋予jvm动态编译的能力

    看到又出现一个词,动态编译,来我们来唠唠这个词

    Java中编译类型有两种:

     

    • 静态编译:一次性编译。在编译的时候把你所有的模块都编译进去。
    • 动态编译:按需编译。程序在运行的时候,用到那个模块就编译哪个模块。

    如果不理解,那么给个业务场景帮助你理解:比如开发一个阅读器,支持txt,pdf,doc三种格式。我们把读txt,读pdf,读doc定义为三个功能模块。

    • 静态编译:我想看个txt,点击应用程序图标以后,三个功能都加载进来了。在这里,另外两个模块的作用就是占用系统资源。
    • 动态编译:我想看个txt,点击应用程序,判断格式,只加载读txt模块,使用读txt模块。

    显然,动态编译1速度快,2节省了系统资源,3利于今后拓展。

    那么这个JVM动态编译常用的场景有哪些呢?或者说反射的使用场景(用途)有哪些?此物的用途?

    • 场景一:在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。
    • 场景二:当我们在使用IDE(如Eclipse,IDEA)时,当我们输入一个对象或类并想调用它的属性或方法时,一按点号,编译器就会自动列出它的属性或方法,这里就会用到反射。
    • 场景三:反射最重要的用途就是开发各种通用框架。很多框架(比如Spring)都是配置化的(比如通过XML文件配置JavaBean,Action之类的),为了保证框架的通用性,它们可能需要根据配置文件加载不同的对象或类,调用不同的方法。

    为啥要用它?它有什么优缺点?

    java的反射机制就是增加程序的灵活性,解耦。反射就是一种机制,可以让你仅知道类的名字的情况下,可以了解整个类的内部的结构,并且访问内部的成员和方法等。

    解释:对于大型的软件,一个大公司的各个小组都有自己的分工,去实现不同的模块,那么各个小组之间如何协作就非常关键。例如A小组完成IPolicy接口的实现,而B小组需要使用A的实现,这时候就可以使用反射机制,B小组完全不用知道IPolicy是如何实现的,只需要知道实现后的类名即可,或者说,类名完全保存在一个xml或者属性中,由A小组去填充,这样B小组的代码看上去就和A毫无瓜葛。

    因此反射在一般框架中使用较多。因为框架要适用更多的情况。对灵活性要求较高。

    优势:
    • 增加程序的灵活性,避免将固有的逻辑程序写死到代码里
    • 代码简洁,可读性强,可提高代码的复用率
    缺点:
    • 相较直接调用在量大的情景下反射性能下降
    • 存在一些内部暴露和安全隐患

    针对它的缺点,我们聊聊反射到底慢在哪些地方

    • 寻找类 Class 字节码的过程
    • 安全管理机制的权限验证等等
    • 若需要调用 native 方法调用时 JNI 接口的使用

    反射的工作原理?反射技术的组成部分?

    万物皆对象我们定义的类其实从面向对象的角度来分析它其实也是一个具体的对象它是一个描述类的实例描述这个类中有哪些属性行为等等内容.。我们可以通过定义类来描述一组具有相同属性行为的实例对象比如我们创建 Person
    Class Person {
        String ID;
        int age;Seven
        void talk(){
    
        }
    }

    我们可以基于这个类创建具体不同身份证号和姓名的 Person 实例(new Person)。每一个实例都具有身份证号年龄说话的行为通过上面的简单案例,我们可以这么理解在Java 语言中 Class 的定义是创建对象的统一模板.。那么我们可以思考这样一个问题既然不管是 Java 语言默认的类还是我们自定义创建的类都 是为了创建具有相同行为属性的对象的模板

    那么每一个类我们在定义的时候是不是也可以抽取共性的东西比如每一个类都有包名性定义行为(方法),构造器等等
    那么既然每一个类都会具备这样的内容那么这些类对象实例应该也可以抽取成一个公有的模板用于创建类对象实例的模板所以在java 这个类定义的创建模板就是我们 java 语言中的 java.lang.Class Class 的模板中我们也可以找到大家耳熟能详的模板类如Method,Constructor,Field ...
    深入 Class 内部
    通过上面的内容我们已经了解到我们创建的每一个自定义的Class实例都是基于他的模板类java.lang.Class 在大家每一个编写的类实例中都会定义这个类的包名类名访问域特征符构造器字段父类接口等等内容这些内容在我们的 Class 类中都提供了对应的获取方法进行获取

    如何使用?

    反射-基本信息操作
    • int modifier = clazz.getModifiers(); //获取类的修饰符
    • Package package= clazz.getPackage();//获取类的包名
    • String fullClassName = clazz.getName();//获取类的全路径名称
    • String simpleClassName = clazz.getSimpleName();//获取类的简单名称
    • ClassLoader classLoader = clazz.getClassLoader();//获取类的类加载器
    • Class[] interfacesClasses = clazz.getInterfaces();//获取类实现的接口列表
    • Class fc= clazz.getSuperclass();//获取类的父类
    • Annotation[] annotations= clazz.getAnnotations(); //获取类的注解列表
    反射-字段操作
    • Field[] fields = clazz.getFields();//获取类中所有的公有字段 包含继承
    • Field[] declaredFields=clazz.getDeclaredFields();//获取类中定义的字段 内部
    • Field nameField=clazz.getField("name");//获取指定名称的公有字段
    • Field likeDescField=clazz.getDeclaredField("likeDesc");//获取指定名称类中定义的字段
    • int modifersFiled = likeDescField.getModifiers();//获取字段的修饰
    • nameField.setAccessible(true);//指定字段强制访问
    • nameField.set(person,"小皮皮");//成员字段赋值(需指定对象)
    • descriptionField.set(null,"没有结婚的都是男孩!");//静态字段赋值
    反射-方法操作
    • Method[] methods = clazz.getMethods();//获取类中所有的公有方法 继承
    • Method[] declaredMethods = clazz.getDeclaredMethods();//获取类中定义的方法
    • Method talkMethod = clazz.getMethod("talk", String.class);//获取类中指定名称和参数的公有方法
    • Method pugMethod = clazz.getDeclaredMethod("pickUpGirls") //获取类中定义指定名称和参数的方法
    • int modifers = pugMethod .getModifiers();//获取方法的修饰符
    • talkMethod.invoke(boy,"I LOVE SEVEN");//指定对象进行成员方法的调用
    • pugMethod .setAccessible(true);//指定方法的强制访问
    • pickUpGirlsMethod.invoke(null);//静态方法的调用
    反射-构造器操作
    • Constructor[] cons = clazz.getConstructors();//获取类中所有的公有构造器
    • Constructor[] cons = clazz.getDeclaredConstructors();//获取类中所有的构造器
    • Constructor conNoParam= clazz.getDeclaredConstructor();//获取类中无参的构造器
    • Constructor con= clazz.getDeclaredConstructor(String.class,String.class); //获取类中有参构造
    • int modifers = con.getModifiers();//获取构造器的修饰符
    • conNoParam.newInstance();//构造器实例对象
    • con.setAccessible(true);//指定方法的强制访问
    • con.newInstance('abc','def');//有参构造调用
    • class.newInstacne();//class直接调用默认无参构造
    展开全文
  • 死磕Java之Java核心语法

    千次阅读 多人点赞 2020-03-15 14:09:30
    2、Java之父还是有必要知道的,学Java不知道Java之父,被问到会被笑话的,Java之父是詹姆斯·高斯林(James Gosling)。 3、Java应用领域: Java SE(Java Standard Edition)标准版:支持面向对象桌面级应用(比如...

    一、概述

    (一)Java语言概述

    1、Java是SUN1995年推出的一门高级编程语言。
    2、Java之父还是有必要知道的,学Java不知道Java之父,被问到会被笑话的,Java之父是詹姆斯·高斯林(James Gosling)。
    在这里插入图片描述
    3、Java应用领域:

    • Java SE(Java Standard Edition)标准版:支持面向对象桌面级应用(比如:Windows下的应用程序)的Java平台,提供了完整的Java核心API,此版本以前称为J2SE;
    • Java EE(Java Enterprise Edition)企业版:是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet、JSP等,主要针对Web应用开发。版本以前称为J2EE;
    • Java ME(Java Micro Edition)小型版:支持Java程序运行在移动端(手机,Pad)上的平台,对Java API所有精简,并加入了针对移动端的支持,此版本以前称为:J2ME;
    • Java Card:支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。

    3、Java的发展历程

    • 1996年,发布JDK1.0
    • 2004年,发布里程碑版本:JDK1.5,为突破此版本的重要性更名为JDK5.0
    • 2009年,Oracle公司收购SUN,交易价格74亿美元
    • 2011年,发布JDK7.0
    • 2014年,发布JDK8.0,是继JDK5.0之后,变化最大的版本。
    • 随后发布了JDK9.0、JDK10.0、JDK11.0、JDK12.0、JDK13.0

    4、Java语言特点

    • 面向对象:两大基本概念(类和对象)与三大特性(封装,继承,多态)
    • 健壮性:吸收了C/C++语言的优点,去掉了影响程序健壮性的部分(指针、内存的申请与释放等,Java是自动管理内存的)
    • 跨平台性:一处编写,到处运行

    原理图:
    在这里插入图片描述

    (二)Java运行机制与运行过程

    1、Java虚拟机(Java Virtal Machine),也就是JVM

    • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器等。
    • 对于不同的平台,有不同的虚拟机,只有某平台提供了对应的Java虚拟机,java程序才可以在此平台运行
    • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,导出运行”

    2、垃圾收集机制(Garbge Collection),也就是GC
    Java技术提供了垃圾收集器,用于自动检测每一块分配出去的内存空间,然后将无价值的内存块自动回收。

    两种情况会回收内存:

    • 为对象赋予了空值NULL后再没有调用过
    • 为对象赋予了新值,即重新分配了内存空间

    3、运行原理(不如叫运行步骤)

    • 编写Java源文件,以.java作为后缀名
    • 编译为字节码文件,使用java编译器将.java源文件编译成JVM能接受的指令集合,且以字节码.class的形式保存在文件中
    • 解释执行字节码.class文件,JVM读取字节码,取出指令,并且将其解释为能够将计算机执行的语言

    这是官方给的流程图:
    网上很多博主给出的步骤并不是这么全,多多少少都会少一个步骤,就是从JVM到物理机的时候,会被解释成计算机能识别的指令进行执行。你看到我的这个图之后,以后就应该多注意了。
    在这里插入图片描述
    为了方便大家好理解,更形象的记忆,我单独画了个图:
    在这里插入图片描述
    解释:
    **Java开发人员首先编写.java文件,因为.java文件对开发人员来说是可读性比较高的,通常称.java为源代码。首先将所有源代码编写以.java扩展名结尾的纯文本文件。
    然后,由javac编译器编译为.class文件。它包含字节码java虚拟机的机器语言。
    然后java启动器工具将使用Java虚拟机的实例运行最后编译的应用程序。
    **

    (三)Java环境搭建

    1、什么是JDK,JRE

    • JDK(Java Development Kit):Java开发工具包
      JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用另外单独安装JRE了。
      例如常见的:编译工具(javac.exe),打包工具(jre.exe)等。
    • JRE(Java Runtime Environment):Java运行环境
      JRE包含Java虚拟机(JVM)和Java程序所需的核心类库等,如果想运行一个开发好的java程序,那么计算机中只需要安装JRE即可。

    2、JDK、JRE、JVM的关系

    在这里插入图片描述
    JRE = JVM + Java SE标准类库
    JDK = JRE + 开发工具集(例如:java.exe、javac.exe等工具)

    总的来说:使用JDK的开发工具开发完java程序后,交给JRE去运行

    3、环境变量

    • JAVA_HOME: JDK的安装路径
    • PATH: 使操作系统可以在任何路径下识别java命令
    • CLASSPATH: Java加载类的路径
      具体的配置方法大家可以自行去搜索一下,这里不再过多叙述。

    4、运行步骤
    以windows为例:配置好环境变量之后,打开cmd窗口,在cmd窗口中执行javac 源文件名.java就会生成相应的字节码文件(.class),然后使用java 字节码文件(不能加后缀)

    (四)HelloWord程序

    1、利用记事本或者工具创建一个HelloWord.java文件
    在这里插入图片描述
    2、然后加入如下代码:

    /**
     * 这是文档注释
     * @author zhenghui
     * @version HelloWord 0.1
     */
    public class HelloWord {
       
       /* 
    	这是多行注释
       */
       public static void main(String[] args) {
       		//这是单行注释
       		//打印一个HelloWord
       		System.out.println("HelloWord");
       }
    }
    

    3、运行
    1、进入cmd
    分享几个正确打开CMD的姿势,你知道几种?别人问你别再说不知道了,程序猿就要有程序猿的样子

    2、编译
    使用javac HelloWord.java
    在这里插入图片描述
    3、运行

    C:\Users\Administrator\Desktop\JavaTest>java HelloWord
    HelloWord
    

    在这里插入图片描述
    解析及规则:
    1、Java应用程序的执行入口
    main()方法: public static void main(String[] args) {...}
    2、Java语言严格区分大小写
    3、Java语法通常由一条条语句构成,每个语句以“;”结束
    4、一个源文件(.java)中最多只能有一个public类。其它类的个数不限(内部类等),如果源文件包含一个public类,则文件名必须是这个public类的类名,不然编译会报错的。
    5、注释:

    • 单行注释://这是单行注释
    • 多行注释:/*这是多行注释*/
    • 文档注释:是java特有的一种注释,注释内容可以被JDK提供的javadoc工具所机械成一套以网页文件的形式的说明文档。

    例如:

    /**
     * 这是文档注释
     * @author zhenghui
     * @version HelloWord 0.1
     */
    

    二、变量与运算符

    (一)关键字与保留字

    • 关键字的定义和特点
      • 定义:被Java语言赋予了特殊含义,用做专门用途的字符串
      • 特点:关键字所有字母都为小写
    定义类型 关键字
    定义数据类型 class、interface 、enum 、byte、 short、 int、 long 、float 、double、 char、 boolean、 void
    定义流程控制 if、 else 、switch、 case 、default 、while 、do 、for、 break、 continue、return、
    定义访问权限修饰符 private、 protected、 public
    定义类,函数,变量修饰符 abstract、 final 、static 、synchronized
    定义类与类之间关系 extends 、implements
    定义建立实例及引用实例 new 、this、 super、 instanceof
    异常处理 try 、catch、 finally、 throw 、throws
    package 、import
    其他修饰符 native、 strictfp、 transient 、volatile 、assert

    注意:true、false、null不是关键字

    • 保留字
      现在Java版本中未使用,但是以后的版本可能会使用的关键字
      goto、const

    (二)标识符

    1、标识符的定义

    • Java对各种变量、方法以及类等命名时使用的字符序列称为标识符。

    2、标识符命名规范

    • 由字母、数字、下划线、和"$"中的任意字符串组合而成
    • 数字不可以开头
    • 需要具有一定的意义,且不能是java的关键字
    • 严格区分大小写

    3、名称命名规范
    对于规范,就牵扯到一系列的问题,每个公司都有公司不同的企业文化,所以有些地方也会不同。下面这是常见的:

    • 包名:多单词组成时所有字母都小写:xxxyyyzzz
    • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
    • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

    (三)变量以及数据类型

    1、变量

    • 变量的概念
      -内存中的一个内存区域
      -该区域数据可以在同一类型范围不断变化
      -变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

    • 注意事项
      -在Java中的每个变量,必须先声明,后使用
      -变量在作用域所定义的一对{}内,其变量只有在作用域内有效
      -同一作用域内,不能定义重名的变量

    • 声明变量
      -语法:<数据类型> <变量名称>;
      -示例:int i;

    • 变量赋值
      -语法:<变量名称> = <值>;
      -示例:i = 6;

    • 声明和赋值变量
      -语法:<数据类型> <变量名称> = <值>;
      -示例:int i = 6;

    • 变量分类
      在这里插入图片描述

    2、数据类型

    在这里插入图片描述

    • 整数类型:默认为int,声明long需要加’l’或者’L’
      在这里插入图片描述

    • 浮点类型:默认为double类型,声明float型需要加’f’或’F’;float可以精确到7位有效数字,double精度是float的两倍。
      在这里插入图片描述

    • 字符类型:占2个字节。

    • 布尔类型:只允许true和false,无null。不可以使用0或非0的整数替代false和true。

    (四)运算符

    大家可以参考:米粒教育的详解Java表达式与运算符很不错。
    为了防止丢失,下面是摘取的比较重要的部分:

    运算符用于连接表达式的操作数,并对操作数执行运算。例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。在java语言中,运算符可分为5种类型:算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。

    根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。位运算符涉及到二进制位的运算,在java 程序中运用不是很多,因此下面主要介绍算术运算符、赋值运算符、关系运算符和逻辑运算符。

    (1)算术运算符

    算术运算符用在算术表达式中,其作用和数学中的运算符相同,下表列出了Java语言支持的算术运算符。
    在这里插入图片描述
    算术运算符一般用于数值运算,可对操作数进行加减乘除、取余、自增和自减操作。

    加减乘除、取余运算符比较容易理解。下面重点说说自增和自减运算符。

    自增自减是单目运算符,只需要一个操作数参加运算。例如:a++、++a、a–、--a等。其中,a是操作数,++是自增运算符,–是自减运算符,自增和自减运算符即可以放在变量的前面,也可以放在变量的后面,例如++a、 a++。

    自增(++):将变量的值加1,分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。

    自减(–):将变量的值减1,分前缀式(如–a)和后缀式(如a–)。前缀式是先减1再使用;后缀式是先使用再减1。

    (2)赋值运算符

    赋值运算符是双目运算符,用在赋值表达式中。它的作用是将运算符右边操作数的值赋给运算符左边的变量。下表列出了Java语言支持的赋值运算符。
    在这里插入图片描述

    赋值运算符分为两类,一类是简单赋值,一类是复合赋值。简单赋值是直接把运算符右边操作数的值赋给运算符左边的变量,运算符有“=”;复合赋值运算符复合赋值是先执行运算符指定的运算,然后再将运算结果赋值给运算符左边的变量,复合赋值运算符有“+=、-=、*=、/=、%=”。

    简单赋值运算符非常容易明白和理解。下面重点说说复合赋值运算符“+=”操作,其它复合赋值运算符操作原理同“+=”运算符操作原理相同,这里就不再一一讲述了。

    复合赋值运算符“+=”操作执行过程如下:

    1. 将运算符右侧的操作数,与运算符左侧的操作数(变量值)执行相加操作;

    2. 相加的结果赋值给运算符左侧的变量。

    例如下面语句:

    int num = 10;

    num+= 20;

    声明的变量num初始值为10,然后执行num+= 20赋值操作,其操作过程是变量num先与数值20相加,相加的结果是30,然后再将30赋值给变量num,此时变量num的值为30。

    (3)关系运算符

    关系运算符也是双目运算符,用于关系表达式。关系运算符对两个操作数进行比较,并返回比较结果,比较结果的值为一个布尔值(true或false)。下表列出了Java语言支持的关系运算符,表中例子假设A和B不相等,并且其A小于B。

    在这里插入图片描述
    关系运算符用于比较两个操作数的大小,两个操作数共有六种比较方式。

    第一种比较方式是判断两个操作数是否相等,用运算符“==”进行运算,如果两个操作数相等,比较结果返回true,否则返回false。

    第二种比较方式是判断两个操作数是否不相等,用运算符“!=”进行运算,如果两个操作数不相等,比较结果返回true,否则返回false。

    第三种比较方式是判断运算符左边的操作数是否大于运算符右边的操作数,用运算符“〉”进行运算,如果左边的操作数比右边的操作数大,比较结果返回true,否则返回false。

    第四种比较方式是判断运算符左边的操作数是否小于运算符右边的操作数,用运算符“<”进行运算,如果左边的操作数比右边的操作数小,比较结果返回true,否则返回false。

    第五和第六种比较方式是判断运算符左边的操作数是否大于等于或小于等于右边的操作数,用运算符“〉=和<=”进行运算,如果比较结果满足要求,则返回true,否则返回false。

    (4)逻辑运算符

    逻辑运算符连接两个关系表达式或布尔变量,用于解决多个关系表达式的组合判断问题,返回的运算结果为布尔值。例如,在数学中,表示一个数值的范围时,经常用不等式来表述,假设一个数值取值范围为0到100,设该数值为x,不等式0<x<100给出了x的取值范围。在java程序语言中,这个不等式只能分解为x<0和x>100两个关系表达式,然后用逻辑运算符进行连接。下表列出了Java语言支持的逻辑运算符,表中假设布尔变量A为真,变量B为假。

    在这里插入图片描述
    逻辑运算符“&&”是双目运算符,用于判断两个关系表达式或布尔变量是否都为真,只有两个表达式的返回结果都为真时,运算结果为真,否则运算结果为假。

    逻辑运算符“||”是双目运算符,用于判断两个关系表达式或布尔变量是否有一个为真,如果有一个为真,返回结果为true,否则返回false。

    逻辑运算符“!”是单目运算符,用于取反关系表达式返回的值。例如:对于关系表达式a>b,如果a> b为真,取反后为false,如果a> b为假,取反后为true。

    (5)Java运算符的优先级

    和数学中的运算符一样,Java运算符也存在优先级关系。在Java表达式中,优先级高的运算符先参与运算,优先级低的运算符后参与运算。下表给出了运算符的优先级,表中优先级栏,数字越小优先级越高,每个运算符用中文顿号分割。
    在这里插入图片描述

    三、流程控制

    流程控制语句是用来控制程序中各个语句执行顺序的语句,可以把语句组合成一定的逻辑模块,让程序跟着人的思维走,最终编写成一个优秀的功能。

    可以分为三种基本流程结构:

    • 顺序结构
    • 分支结构
    • 循环结构

    (一)顺序结构

    Java程序中从上到下逐渐的执行,中间不适用任何判断和跳转。

    例如:

    public class HelloWord {
       public static void main(String[] args) {
       		int a = 10;
       		int b = 20;
       		System.out.println("a+b="+(a+b));
       }
    }
    

    (二)分支结构

    1、if-else结构

    • if(条件表达式){自行代码块;}
      例如:判断年龄是否成年,并给出成年的提示
    int age  = 18;
    if(age>=18){
    	System.out.println("已经成年")
    }
    
    • if(条件表达式){ 执行代码块1; }else{ 执行代码块2; }
      例如:判断年龄是否成年,给出成年和未成年的提示
    int age  = 18;
    if(age>=18){
    	System.out.println("已经成年")
    }else{
    	System.out.println("未成年")
    }
    
    • if(条件表达式){ 执行代码块1; }else if(条件表达式){ 执行代码块2; }else{ 执行代码块3; }

    例如:判断年龄是否成年,给出成年和未成年的提示,并提示不合法的年龄(负数)

    int age  = 18;
    if(age>=18){
    	System.out.println("已经成年")
    }else if(age<1){
    	System.out.println("成年为负数,不合法哦")
    }else{
    	System.out.println("未成年")
    }
    

    2、switch-case结构

    语法:

    switch(表达式){
        case 常量1:
            语句1;
            // break;
        case 常量2:
            语句2;
            // break;
        default:
            语句;
            // break;
    }
    
    • switch(表达式)中表达式的值 必须是下述几种类型之一:byte ,short ,char ,int ,枚举,String;
    • case子句中的值必须是 常量,不能是变量名或不确定的表达式值;
    • 同一个switch语句,所有case子句中的常量值互不相同;
    • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾;
    • default子句是 可任选 的。同时,位置也是灵活的。当没有匹配的case时,执行default。

    (三)循环结构

    定义:在满足某些条件的情况下,反复去执行特定的代码。
    循环语句四个组成部分:初始化部分循环条件部分循环体部分迭代部分;

    在这里插入图片描述

    1、for循环

    语法:

    for(1初始化部分; 2循环条件部分; 4迭代部分){
        3循环体部分;
    }
    
    • 循环条件部分为boolean类型的表达式,如果值为false时,退出循环;
    • 初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔;
    • 可以有多个变量更新,用逗号分隔

    2、while循环

    语法:

    1初始化部分;
    while(2循环条件部分){
     3循环体部分;
     4迭代部分;
    }
    
    • 注意不要忘记声明迭代部分。否则,循环将不能结束,变成死循环
    • for循环和while循环可以相互转换

    3、do-while循环

    语法:

    1初始化部分;
    do{
        3循环体部分;
        4迭代部分;
    }while(2循环条件部分);
    
    • do-while循环至少执行一次循环

    4、嵌套循环

    将一个循环放在另一个循环体内,就形成了嵌套循环。

    5、break、continue、return的使用

    • break:终止某个语句的执行
    • continue:跳过一次循环,继续下一次循环
    • return:如果走到这个return语句的是,就不在执行剩下的代码了会直接返回数据,当然了直接return;也是可以的。
    展开全文
  • Java核心优势

    千次阅读 2017-09-05 20:24:01
    Java核心优势:跨平台。 通过“编译器”将java源程序(.java)编译成字节码文件(.class)。 java:一次编译,到处运行。 c:多次编译,到处运行。 java提供了自动内存管理机制,由垃圾回收器在后台自动回收。 ...

    Java核心优势:跨平台。

    通过“编译器”将java源程序(.java)编译成字节码文件(.class)。

    java:一次编译,到处运行。

    c:多次编译,到处运行。

    java提供了自动内存管理机制,由垃圾回收器在后台自动回收。

    java则是完全的面对对象语言,它句法清晰、规模更小、容易学。


    关键字:被java赋予特殊含义的单词(小写)。

    标识符:是指程序中包、类、接口、变量或方法的名字。

    编程规范:

    类名和接口名:首字母大写,如果类名有几个单词构成,每个单词的首字母都大写。

    方法和变量名:首字母小写,如果方法有几个单词构成,其他单词首字母大写。

    包名:采用小写。

    常量名:才用大写。

    展开全文
  • Java核心技术 卷II 高级特性(原书第9版) Java核心技术·卷1:基础知识(原书第9版) Java编程思想第四版完整中文高清版 Java并发编程实战 人月神话 点我合集下载 (电子版仅供预览及学习交流使用,下载后请24...

    本文将自己所搜集的几本java及相关的计算机电子版书籍分享出来,以便为各位下载。

    已经检查过链接的有效性,不保证所有链接一直有效,见谅。其中包括:

    Java核心技术 卷II 高级特性(原书第9版) 

    Java核心技术·卷1:基础知识(原书第9版)

    Java编程思想第四版完整中文高清版

    Java并发编程实战

    人月神话

     

    点我合集下载电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版

    Java核心技术·卷1:基础知识(原书第9版)

    作为一本力求讲解全部java基本知识的经典书籍,研读相关细节,所获心得颇多。从jdk的下载安装到部署应用程序;从数据类型控制流程到对象与类再到集合;从图形程序设计到Swing用户界面组件;从异常处理到多线程...每一块内容介绍的极其详细,显然有了这本书以后 再也不用google搜索java基础了。如果能够反复并从具体开发角度阅读会发现,此书不只是全面、具体而准确的介绍了java的相关概念和特性而已。而且深入讲解了Java语言的核心特性。诚如书名“Core Java”——Java语言核心内容   

                                           ----------------------引自豆瓣评论

    展开全文
  • 一份整理的蛮不错的Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 获取方式:关注评论+转发,加入Java架构交流群:777584112,群主处免费领取。...
  • JAVA核心】Java GC机制详解

    万次阅读 多人点赞 2018-10-17 16:30:13
    垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制。 导读: 1、什么是GC 2、GC常用算法 3、垃圾收集器 4、finalize()方法详解 5、总结--根据GC原理来优化代码 正式阅读之前...
  • 极客-Java核心技术面试精讲下载

    万次阅读 2020-07-13 15:45:55
    Java核心技术面试精讲专栏分为5大模块。 Java基础:将围绕Java语言基本特性和机制,由点带面,帮你构建牢固的Java技术功底。 Java进阶:主要将围绕并发编程、Java虚拟机等领域展开,助你攻坚大厂Java面试的核心阵地...
  • java核心技术(第八版)+书本源码

    千次下载 热门讨论 2012-12-03 10:27:25
    这本书的名气也是非常大,搜索java经典书籍,两本书绝对位于其中:一本是java编程思想,另一本就是这本java核心技术。强烈推荐!该压缩包包含内容有:书籍包含pdf和chm两种格式、书中涉及的全部源码!pdf格式是高清...
  • Java高级技术第三章——Java核心类库

    千次阅读 2018-02-12 10:24:47
    前言 ... Java自带很多实用的包,这些包中定义了很多类库,可以很方便地进行代码重用。...常用的Java核心包及其功能是: 包名 主要功能 java.applet 提供了创建applet需要的所有类 java.awt.* ...
  • 整理了一份Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 欢迎大家加入java学习交流社区 点击加入 可获取文中文档 小...
  • JAVA核心技术

    千次阅读 2013-11-24 17:13:53
    编辑推荐 本书详细讲解Java语言基础开发中的各种技术,主要内容包括如下。... ·Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。  ·Java网络编程:Applet、Sockt/TCP/UDP、NIO、RMI
  • JAVA核心语法笔记

    千次下载 2009-05-07 18:25:04
    整理的培训机构的部分java核心语法的笔记,5月18号将上传一份125个java笔试题的文档及面试技巧,欢迎各位java爱好者来下载
  • Java核心技术面试精讲 - 目录

    千次阅读 2020-04-30 19:26:24
    这系列相关博客,转载 Java核心技术面试精讲 Java核心技术面试精讲 - 目录开篇词 (1讲)模块一 Java基础 (14讲)模块二 Java进阶 (16讲)模块三 Java安全基础 (2讲)模块四 Java性能基础 (3讲)模块5 Java应用开发扩展 (4...
  • Java核心技术卷1

    千次阅读 2016-04-07 19:00:19
    java核心卷1
  • JAVA核心技术总结

    千次阅读 2015-05-06 15:37:08
    技术总结 JAVA核心技术总结 J2EE技术总结 工作和学习总结 大数据相关技术总结
  • “JAVA 核心面试知识点”,这份资料就比较厉害了,它几乎涵盖了所有的Java核心知识点,并且融入了大佬自己的一些经验和思想! 文档涵盖知识: 面试必问的:Java基础、高并发、多线程、分布式、设计模式、Spring全家...
  • JAVA核心知识点整理

    千次阅读 2019-07-02 09:49:25
    JAVA核心知识点整理见PDF: 链接: https://pan.baidu.com/s/1J9cx_27qH_7IOmnvLs7A5g 提取码: tija 复制这段内容后打开百度网盘手机App,操作更方便哦
  • java核心技术之反射

    千次阅读 2015-12-24 19:33:43
    java核心技术之反射
  • java核心面试知识整理

    2019-06-28 15:51:46
    分享一个java核心面试知识整理的pdf文档给到大家,希望给到大家工作或者面试中提供帮助,确实不错的资料~~ 内容包括jvm、java多线程、spring、微服务、netty、kafka、rabbimq、数据库、设计模式等等,你想掌握的...
  • JAVA核心技术36讲教程

    千次阅读 2018-07-04 09:57:14
    杨晓峰,Oracle 北京 Java 平台部门,首席工程师,OpenJDK Committer,从 JDK 8 开始参与了 JDK 的开发和测试工作,目前领导 Java 核心类库北京团队,主要负责前沿版本的核心类库新特性相关任务。专注于 Java 以及...
  • 而技术是要更新迭代的,所以《Java核心技术卷一》来到了第十版(2016 年)。 我们来看一下《Java核心技术卷一》第十版的大纲。 前九章:包括 “Java 程序设计概述”、“Java 程序设计环境”、“Java 的基本程序设计...
  • Java核心API 题库附答案

    千次阅读 2018-09-28 09:55:27
    Java核心API》考试题 一、理论测试题:(共出50题,共100分) 知识结构题 1.下列哪项不是Java核心API中的接口? C [单元十、十一、十二、十三]  A.Collenction  B.Set  C.Collections  D.Map ...
  • 像《Java核心技术卷一》这样厚得像特朗普的脸皮一样的书,更是没有时间读了。不过,不要担心,二哥替大家解决了这个烦恼,我用了一个月的时间把这本书完整地读了一遍,并写了 9 篇高质量且通俗易懂的文章,供大家...
  • Java核心技术卷二(中文第九版)_扫描版

    千次下载 热门讨论 2015-07-18 15:02:27
    Java核心技术卷二(中文第九版)_扫描版
  • JAVA核心知识点整理.pdf

    千次阅读 2019-02-25 16:43:25
    点击下方链接免费下载! https://cisco-huang.oss-cn-beijing.aliyuncs.com/文档/JAVA核心知识点整理.pdf
  • Java核心技术 卷I 基础知识 中文版第9版【全】.part2.

    千次下载 热门讨论 2015-05-17 06:35:19
    Java核心技术 卷I 基础知识 中文版第9版【全】.part1,因为文件太大,CSDN有单个文件大小限制,所以分为了2部分,这个为part2,请点击我的名字,进入我的资源页面,下载好part1和part2后一起解压。另外还有Java核心...
  • java核心技术卷代码下载

    千次阅读 2015-04-27 11:34:19
    java核心技术卷代码下载 java核心技术卷源代码下载 http://www.horstmann.com/corejava.html   Further Information Bug ListDownload Code: 9th Edition | 8th Edition | 7th edition | ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,492
精华内容 46,196
关键字:

java核心

java 订阅