1.知识点概叙 ① 定名常量:关键字final,类似C++ const定义,一般用大写:final double PI=3.1415926 ② 5/2=2:5.0/2=2.5://通常意义的除法,至少一个操作数为浮点数. ③ 当且仅当被除数为负时,余数才为负:-7%3=-1,-26%8=-2:20%-13=7 ④ 浮点数一般近似存储,整形才是精确的存储.整形一般默认是int,浮点浮点数一般默认是double.赋值或者计算时,应用L或F显示标注如:System.out.print(3.0F/10.…
1.多线程  1.1线程 线程是程序运行的基本执行单元.指的是一段相对独立的代码,执行指定的计算或操作.多操作系统执行一个程序时会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点.每个线程都有独立的堆栈.计数器.本地变量.但是能够共享内存,文件处理器,预存储状态等资源.JVM至少有主线程和垃圾清理进程. 1.2使用多线程的好处 如果能合理地使用线程,将会减少开发和维护成本,甚至可以改善复杂应用程序的性能.如在GUI应用程序中,还以通过线…
1.选择结构与输出 ❶Switch语句: Switch表达式必须算出 char,byte,short,int类型数值之一,总是括号括住:Value1----ValueN,对应有相同数据类型且为常量或者常量表达式(1+2,'A'+2),不能包含变量(如1+x); 从某个匹配语句开始向后执行.break和默认情况default可选 ❷条件表达式:System.out.println((a>b)?:a:b); ❸格式化控制台输出Printf:       %b   布尔值              …
使用的课本: Java语言程序设计(基础篇)----西电 李娜(译) 原著: Introduction to Java Progrmming(Eighth Edition) -----Y.Daniel Liang 使用Eclipse编译器. 1.计算机.程序和Java概述 ❶Java流行的原因:简单,面向对象,分布式,解释型,鲁棒,结构中立,安全,可移植,高性能,多线程,动态.一旦编写,任何的地方可运行. ❷区分大小写.如main不能写成Main.标识符由字母,下划线,美元"$",数字…
1 线程协调 目的对各线程进行控制,保证各自执行的任务有条不紊且有序并行计算.尤其是在共享资源或者数据情况下. 1.1 易变volatile cache技术虽然提高了访问数据的效率,但是有可能导致主存储器和cache中的值在某个瞬间的值不同.在多线程中,某个线程访问的可能是cache的值而非主存储器. volatile保证线程直接访问主存储器,保证数据的一致性.volatile只能用于基本数据类型或者数组(boolean,byte, char, double ,float, integer, l…
1.异常与异常处理 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常.绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败.之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意. 异常就是一个表示组织执行正常进行的错误(情况).异常没有处理,程序将非正常终止.这是Java鲁棒性的一个体现.异常处理最根本的优势或者目的:…
1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Java将基本数据类型包装成类,即所谓的包装类---包括:数值包装类Number(Integer,Short,Byte,Float,Double,Long,) ,Character,Boolean. 其继承结构体系如下图所示: ❷数值包装类均扩展自抽象类Number.所有数值包装类数组均是Object([…
1文件类File    ❶封装文件或路径的属性.不包括创建和读写文件操作.File实例并不会实际创建文件.不论文件存在与否,可以创建任意文件名的实例.两种实例创建方式如下:                  new File("c:\\book");//在目录下创建一个File对象                new File("c:\book\test.text");//以某个文件创建一个File对象    ❷构造函数:                File(…
1.初始化 String类是Java预定义类,非基本类型而是引用类型. public class StudyString { public static void main(String[] args) { String s1="Hello World";//初始化1 String s2=new String("Hello World");<span style="font-family: Arial, Helvetica, sans-serif;&…
1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说,equal判断两个引用变量是否指向同一个对象,即判断地址(等同"==").返回true,否则返回false.并没有实际检查是否内容相同.默认实现为: public boolean equals(Object obj)       {return (this==obj);} [java] …
1.Java数据类型       ❶不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值. 它包括:         Primitive变量:boolean,byte, char, double ,float, integer, long, short         JDK不可变类:Boolean, Byte, Character, Double, Float, Integer, Long, Short, String (java.lang包中)      ❷可变类,是当你获得这个类的…
1.数组线性表ArrayList 数组一旦定义则不可改变大小.ArrayList可以不限定个数的存储对象.添加,插入,删除,查找比较数组更加容易.可以直接使用引用类型变量名输出,相当于toString().输出一个数组([,,,,,,]),数组中元素为对应标号存储元素的toString[]. 数组线性表和数组的区别总结如下: public class TestArrayList { public static void main(String[] args) { java.util.ArrayL…
1父类和子类: ❶父类又称基类和超类(super class)子类又称次类和扩展类.同一个package的子类可以直接(不通过对象)访问父类中的(public,缺省,protected)数据和方法. ❷扩展关键字:extends.倘若子类Circles,父类GeometricObject.定义: public class Circles extends GeometricObject ❸Java只容许单一继承,即一个类只能继承自1个父类.多重继承使用接口实现. 2.子类使用父类的构造函数 ❶su…
1.知识要点 ❶不可变类:一旦创建,其内容不能改变的类称之为不可变类.满足:⑴所有数据域私有,⑵没有修改器,⑶没有访问器方法,其返回一个指向可变数据域的引用.(这样通过引用就能修改私有数据域).比如,返回数组,String等皆可能导致实际数据被改变 ❷变量作用域:类的变量和方法可以任意顺序出现,只要方法没有使用某个变量.方法可以定义与类数据变量名称(实例变量和静态变量)相同的局部变量,且使用具有较高的优先级. ❸this引用:指向本身的引用.可以在无参和少参构造函数中使用this调用多参构造函数…
1.知识要点 假设: public ClassName{     int data;   String name;     ClassName(){data=1;}     public static int getdata(){return data;}}</span> ❶含main()的为主类.多个类放在一个文件中,只能有一个主类. ❷类可以不定任何构造方法(函数),系统默认提供无参构造函数.当且仅当无任何无参构造函数时才提供. ❸构造函数与类同名,无返回类型.   ❹对象声明:Class…
1.声明数组变量:        double[] array=new double[10];         double array[]=new double[10];       double[] array1=new double[5];       double[] mylist={1.0,2.0,3.0,4.0};//声明创建和初始化一句表达,不能拆分     double[][] myArray=new double[2][];//maArray.length=5,注意此时new…
1.基本知识点    ❶方法在C++里面称为函数.调用方法时,应该类型兼容--即不需显式类型转换即可将形参传递给实参.    ❷形参的改变不影响实参的值.    ❸Java注重模块化设计和自顶向下的设计 2.Math类 Math隐式导入,故不需要import.常用函数如下: ❶正三角和反三角函数:sin(),cos(),tan(),asin(),acos(),atan().类型均为double,输入弧度 ❷角度弧度转换函数:toRadians(),toDegrees().参数和返回类型均为dou…
注意,在UML图中,public-protected-private分别用+,-,#表示. 类中成员修饰符 在同一类访问 在同一包访问 在子类内访问 在不同包可访问 Public √ √ √ √ Protected √ √ √ - Default √ √ - - Private √ - - - 说明: 1.对于子类.同一包的子类可以直接访问(public,protected,default),不同包的子类只能直接访问(public,protected)       2.对于非子类.同一包的可以经…
内容简介 1.课程大纲 2.第一部分第一课:什么是C++? 3.第一部分第二课预告:C++编程的必要软件 开宗明义 亲爱的读者,您是否对C++感兴趣,但是C++看起来很难,或者别人对你说C++挺难的,你不知道如何入门? 别担心,这个系列教程就是为C++初学者准备的. 不可否认,C++是一门非常著名的语言.几乎学计算机的同学都难免要碰一下C++,中国的大学课堂一般也是先学C语言入门,然后就是Java或者C++. C++ 这门语言的使用很广泛,特别是在游戏开发领域,C++的性能和无限可能性使得其几乎…
内容简介 1.课程大纲 2.第一部分第九课:函数 3.第一部分第十课预告: 练习题+习作 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动…
内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[Web探索之旅]的最后一部分. 我们的第二和第三部分都略有难度,不过这第四部分和第一部分一样,都会比较轻松愉快. 这一课我们来聊一聊Web程序员,Web的文化,如何成为一名优秀的Web程序员. 或许看完这部分,你会跃跃欲试,想要成为一名Web程序员也不一定.毕竟现在Web程序员还是比较吃香的. 第四部…
内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适合自己的一个IDE(Integrated Development Environment,就是“集成开发环境”的意思). 如果你真的要开始在Linux下编写程序,除了使用IDE之外(IDE集成了文本编辑器,编译器,调试器,运行程序等),也可以选择另一种难一些的方式:自己用某一种文本编辑器来编写C++…
前言: 对于java的代码审计我就是一个小白,没有代码基础(不会java),从0开始记录我的java漏洞的审计学习之旅.对于java来说是一门很难的语言,但是不去学习就永远不会.对于一门很复杂的语言如果学习的过于仔细专研原理追求完美,容易跑偏消耗积极性和精力,我学的是代码审计而不是java开发,所以我学的比较有针对性,对此仅仅是我个人看法. 00x1: java的基础知识,由于语言的特性,我不是去搞开发所以根据以往的语言经验,我直接在菜鸟的java教程过一遍基础语法,了解java的语言特性,语法…
内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主流的标题呢?不能愉快地玩耍么?” 小编:“那我问你,老子他为什么要写<道德经>咧?” 读者:“为什么咧?” 小编:“因为老子愿意!” 开个小玩笑轻松一下 O(∩_∩)O~ 没办法,不能不激动,因为我们终于来到了这一刻,命令行的征程将从此课开始. 而且你会发现,一旦入门并且精通了Linux命令行,那…
内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是什么,以及如何安装Linux系统(我们以Ubuntu这个Linux发行版为以后的演示系统),我们也在上一课终于把Ubuntu安装好了. “很不错,掌声给自己”. 安装Ubuntu遇到什么问题,可以在我们的QQ群和微信群提问,也可以私信小编,QQ.微信.邮件都行.联系方式在下面. Linux系统确实对…
内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着眼于一个Web site(网站)是如何工作的,我们会更深入地了解Web背后的网络.这里的网络是network,泛指Web中的各台机器之间互相“交流”. 还记得我们之前将Web形象地比喻成什么吗? 对了,就是一个很大的蜘蛛网.对于有蜘蛛恐惧的朋友我只能献上我诚挚的歉意,看到我真挚的表情了吗. 万维网(…
内容简介 1.第三部分第二课:IP地址和域名 2.第三部分第三课预告:协议 第三部分第二课:IP地址和域名 上一课我们说了在Web之中,全球各地有无数台机器,有些充当客户机,有些作为服务器. 那么这些机器如何找到和辨认彼此呢?难道不会“只是因为在人群中多看了你一眼,再也没能想起你容颜”吗? 如果我用我的浏览器上网,我怎么知道哪个服务器向我发送此网站呢? 为了解决这个难题,IT科学家们使用了一个叫做IP地址的东西(东西好像有点太难听了,IP它根本就不是个东西好嘛). IP是Internet Pro…
内容简介 1.Web探索之旅:开宗明义 2.第一部分第一课:什么是Web? 3.第一部分第二课:Web,服务和云 4.第一部分第三课:Web的诞生史 Web探索之旅:开宗明义 大家好. 我们这个系列课程相对比较简单,比[C语言探索之旅],[C++探索之旅],[Linux探索之旅],[TCP/IP网络探索之旅]简单,会让大家在轻松中理解关于Web的方方面面. 您是否对Web感兴趣但是不知道什么是Web呢? 您是否觉得“网络黑客”很神秘? 您是否不清楚Internet和Web有什么区别? 如果您有凡…
内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能…
内容简介 1.课程大纲 2.第一部分第一课:什么是Linux? 3.第一部分第二课预告:下载Linux,免费的噢!   开宗明义 我们总听到别人说:Linux挺复杂的,是给那些追求逼格的程序员用的.咱们老百姓呀,用用Windows就高兴. 但事实并非如此,Linux不是那么“难于上青天”的. 不少学编程的朋友看过<鸟哥的Linux私房菜>,是台湾的鸟哥写的,非常棒. 小编也开始写一个系列教程,希望对自己对别人都有帮助.但我会非常认真的,不会乱来. 在这个教程中,小编会向您证明:Linux并不复…