Java第12章笔记】的更多相关文章

如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: //方法名为骆驼命名法 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面章节中会详细讲解滴 2. 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void :如果方法具有返回值,则需要…
import java.util.*; public class Employee { private static int nextid = 1; private String name; private double salary; private int id; public Employee(String n,double s) { name = n; salary = s; id = 0; } public String getname() { return name; } publi…
java的基本程序设计结构: 1. 声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不能使用未被初始化的变量. 2.在java中不区分变量的声明与定义. 3.当参与/运算的两个操作数都是整数时,表示整数除法:否则表示浮点数除法. 4.自增自减运算符的操作数不能是数值,因为这些运算改变了变量的值. 5.&和|运算符应用于布尔值,得到的结果也是布尔值. 6.java语言允许使用+号拼接两个字符串. 7.当一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串. 8.任何一个java对象…
第一章 计算机程序:计算机为完成某些功能产生的一系列有序指令集合. Java技术包括:JavaSE(标准版)  JavaEE(企业版) ---JavaME(移动版) 开发Java程序步骤:1.编写 2.编译 3.运行  1.编写:   a.大括号成对出现   b.class后面的单词要与文件名一致.(!!包括大小写)   c.java严格区分大小写  2.编译:   命令:javac 文件名.java   产生结果:产生.class为后缀名的文件(此文件,看不懂,乱码)   (注意!!!如果代码…
1.什么是变量:在程序运行过程中它的值是允许改变的量 2.java中常用的数据类型分为四类八种  第一类:整型   int(整数类型)     byte(字节类型)    short(短整形)     long(长整形)    第二类:浮点型   double(双精度类型 双精度)     float(浮点类型 单精度      //CPU处理单精度浮点数的速度比处理双精度浮点数快  第三类:逻辑型   boolean(布尔型  他只有两个值1.True  2.False)   第四类:字符型…
Java 中无参无返回值和带参带返回值习题 编写一个 Java 程序,实现输出学生年龄的最大值 要求: 1. 要求通过定义无参带返回值的方法来实现,返回值为最大年龄 2. 方法中将​学生年龄保存在数组 ages 中,数组元素依次为 18 ,23 ,21 ,19 ,25 ,29 ,17 运行效果为: 最大年龄为:29   我们先来看一个带参数,但没有返回值的方法:                           任务 一. 定义一个无参带返回值的方法,实现输出学生年龄的最大值 提示: 1.定义…
字符串的概述 1.什么是字符串:零个或多个字符组成的有限序列 2.如何使用字符串:(使用字符串分为两步)          1)定义并初始化字符串          2)使用字符,对字符串进行一些处理          // 穿件一个字符串          // 语法          String arhs = “abc”;          // 创建一个空的字符串          String string = new String();          // 创建一个字符串对象De…
异常处理是java中唯一正式的错误报告机制. 而且通过编译器强行运行. 异常參数 抛出异常与方法正常返回值的差别:异常返回的"地点"与普通方法调用返回的"地点"全然不同.(异常将在一个恰当的异常处理程序中得到解决,他的位置可能离异常被抛出的地方非常远,也可能会跨越方法调用栈的很多层次.) 对异常来说,最重要的部分就是类名. 捕获异常 异常处理理论上有两种模型:终止模型和恢复模型.java支持终止模型.对于恢复模型.因为其紧耦合程度太高,所以能够用行不大. 在异常处理…
if基本语法: if(条件){// 表达式   // 代码块   } eg:    int a = 10;    if(a > 1){  System.out.println("内容");    } if(){   // 代码块 }else{   // 代码块 } eg: if(score >= 90){  System.out.println("奖励Mp4一个"); }else{  System.out.println("枪毙");…
什么是类,什么是对象 举例说明什么是类,什么是对象? 一句话:万物皆对象 类的概念:类是具有相同属性和服务的一组对象的集合. 1.为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个部分. 2.在面向对象的编程语言中,类是一个独立的程序单位,应该有一个类名并包括属性说明和服务说明两个主要部分. 对象的概念:对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位. 1.一个对象由一组属性和对这组属性进行操作的一组服务组成. 2.从更抽象的角度来说,对象是问题域或实现域中某些…
第12章 泛型程序设计 本章内容: * 为什么要使用泛型程序设计 * 定义简单泛型类 * 泛型方法 * 类型变量的限定 * 泛型代码和虚拟机 * 约束与局限性 * 泛型类型的继承规则 * 通配符类型 * 反射和泛型 使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性. 12.1 为什么要使用泛型程序设计 泛型程序设计(Generic programming)意味着编写的代码可以被很多不同类型的对象所重用. 12.2 定义简单泛型类…
第12章 Java内存模型与线程 Java内存模型  主内存与工作内存: java内存模型规定了所有的变量都在主内存中,每条线程还有自己的工作内存. 工作内存中保存了该线程使用的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行. 内存间交互操作: 1 lock 作用于主内存的变量,它把一个变量标识为一个线程独占的状态. 2 unlock 作用于主内存的变量,把锁定的变量释放出来 3 read 作用于工作内存的变量,把一个变量的值从主内存传输到线程的工作内存中. 4 load 作用于工作…
设计模式之第12章-享元模式(Java实现) “怎么回事,竟然出现了OutOfMemory的错误.鱼哥,来帮我看看啊.”“有跟踪错误原因么?是内存泄露么?”“不是内存泄露啊,具体原因不知道啊.对了,有说新对象申请不到内存空间.”“这个原因么,我曾写过一篇博文:叫OutOfMemory简单分析.不过你的明显是因为代码问题,产生对象太多,导致内存被耗尽,正好一会有堂课,讲的正好能解决你的问题.”(嘿嘿,轮到我享元模式出场了~) 享元模式之自我介绍 我,享元模式乃是池技术中的重要实现方式,具体定义如下…
第12章 使用Spring远程处理 12.4 在Spring中使用JMS 使用面向消息的中间件(通常成为MQ服务器)是另一种支持应用程序间通信的流行方法.消息队列(MQ)服务器的主要优点在于为应用程序集成提供了异步和松耦合的方式.在Java中,JMS是连接到MQ服务器以发送或接收消息的标准.MQ服务器维护应用程序可以连接并发送和接受消息的队列即主题列表. 队列 队列用于支持点对点消息交换模型.当一名生产者向队列发送消息时,MQ服务器会将消息保留在队列中,并在消费者下次连接时将消息传递给一名消费者…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十三章:角色动画 学习目标 熟悉蒙皮动画的术语: 学习网格层级变换在数学理论,以及如何遍历基于树结构的网格层级: 理解顶点混合的想法以及数学理论: 学习如何从文件加载动画数据: 学习如何在D3D中实现角色动画. 1 框架的层级结构 1.1 数学公式 例如,有下面的结构: 每根子骨骼的坐标系都可以跟父骨骼关联,第一根骨骼与世界坐标系关联: 如果矩阵A0是第一根骨骼的…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及复数相乘如何在平面上表达旋转: 理解四元数以及它的运算: 理解单位四元数如何表达3D旋转: 学习如何转换旋转变量的表达: 学习如何对单位四元数线性差值,并且理解它等价于几何上的3D角度差值: 熟悉DirectX Math库中的四元数类和操作. 1 回顾复数 四元数可以看做是一个复数,所以我们先要回顾…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION) 学习目标 熟悉环境光遮蔽的基本思路,以及通过光线跟踪的实现方法: 学习如何在屏幕坐标系下实现实时模拟的环境光遮蔽. 1 通过光线追踪实现的环境光遮蔽 其中一种估算点P遮蔽的方法是光线跟踪.我们随机跟踪点P半圆内的光线,然后查看和网格相交的光线.如果跟踪了N条光线,相交了h条,那么点P的遮蔽值为: 只有交点q…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 学习目标 理解为什么需要法线贴图: 学习法线贴图如何保存: 学习法线贴图如何创建: 学习法线贴图中的法向量的坐标系统是如何与物体空间的三角形的坐标系统关联的: 学习如何在顶点和像素着色器中实现法线贴图. 1 使用法线贴图的原因 找到一种方法在光滑的平面上,显示出更多的细节(比如粗糙的砖块). 如果使用曲面细分是可以增加实际的细节的,但是我们还是需要…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十七章:拾取 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 学习如何实现拾取算法,我们将它分解为下面几个步骤: 当点击屏幕上s点时,计算对应的透视窗口上的点p: 在视景坐标系下计算拾取射线: 将射线和要进行检测的模型变换到同一个坐标系下: 检测模型是否和射线相交,取深度值最小的那…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 学习如何实现硬件实例化: 熟悉包围体,学习如何创建和使用它们: 学习如何实现截头锥体剔除. 1 硬件实例化 给每个实例都复制一份顶点和索引是非常浪费的,所以我们只保存一份物体在局部坐标系下的数据,然后使用…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 回顾视景坐标系变换的数学算法: 熟悉第一人称摄像机的功能: 实现第一人称摄像机: 理解如何动态索引一组纹理. 1 回顾视景坐标系变换 如果QW = (Qx, Qy, Qz, 1), uW = (ux,…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 曲面细分阶段包含渲染管线中的三个阶段,用以细分几何物体,它在顶点着色器和几何着色器之间.使用曲面细分的主要原因: 基于GPU的LOD: 物理和动画的优化,可以在低面模型上计算物理效果和动画,然后细分为高面模型用以渲染: 节…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes GPU已经被优化为处理单个地址或者连续地址(流操作)的大量内存数据:这和CPU的随机内存访问形成鲜明对比.因为顶点和像素可以独立处理,所以GPU被架构为大量的并行运算:比如NVIDIA…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 假设我们没有使用曲面细分阶段,几何着色器阶段就是在顶点着色器和像素着色器之间的一个可选的阶段.几何着色器输入的是基元,输出的是一个基元列表:假如我们绘制的是三角形列表,那么几何着色器…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 模板缓冲(stencil buffer)状态是通过配置一个D3D12_DEPTH_STENCIL_DESC实例,并且赋值到PSO中的D3D12_GRAPHICS_PIPELINE_STATE_DESC::DepthStenci…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第九章:贴图 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 学习如何定义将一个纹理映射到一个三角形上: 学习如何创建和启用纹理: 学习纹理如何被过滤后生产一个更加平滑的图像: 学习如何将一个纹理通过地址模式展开多次: 学习如何将多个纹理合并成一个新贴图和特殊效果: 学习一些基本的纹…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 理解本章中针对命令队列的更新(不再需要每帧都flush命令队列),提高性能: 理解其他两种类型的根信号参数类型:根描述和根常量: 熟悉如何通过程序方法来绘制通用的几何形状:盒子,圆柱体和球体: 学…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 熟悉Direct3D接口的定义,保存和绘制几何数据 : 学习编写基本的顶点和像素着色器: 学习使用渲染流水线状态对象来配置渲染流水线: 理解如何创建常数缓存数据(constant buffer data…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线 学习目标 了解几个用以表达真实场景的标志和2D图像的深度空间: 学习在Direct3D中如何表示3D物体: 学习如何模拟虚拟摄像机: 理解渲染流水线:如何用几何描述的3D场景渲染出2D图像: 1 3D幻觉 如何在2D平面(显示器)上产生3D场景的幻觉: 1.根据与摄像机的距离缩放: 2.遮挡关系: 3.光照: 4.阴影 2 模型的表示 一个模型是由…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化 学习目标 对Direct 3D编程在3D硬件中扮演的角色有基本了解: 理解COM在Direct 3D中扮演的角色: 学习基本的图形学概念,比如存储2D图像.页面切换,深度缓冲.多重纹理映射和CPU与GPU如何交互: 学习如何使用性能计数函数读取高精度时间: 学习如何初始化Direct 3D: 熟悉本书Demo通用的应用框架中的基本结构…