java趣味编程100例
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于java趣味编程100例内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在java趣味编程100例相关知识领域提供全面立体的资料补充。同时还包含 j2ee是什么、jar格式、java 的知识内容,欢迎查阅!
java趣味编程100例相关知识
-
php趣味编程-php求个人所得税php趣味编程-php求个人所得税<?phpheader("Content-Type: text/html; charset=utf-8");/*个人所得税 以3500后的数字1 500 5 02 500-2000 10 25=500*0.53 2000-5000 15 25+150 = 1754 5000-20000 20 25
-
php趣味编程 -php存钱的问题php趣味编程 -php存钱的问题存钱的问题。。存一笔钱。用来大学的生活费。四年。。每个月1000。刚好完整存领取的年利息是1.71%<?phpheader("Content-Type: text/html; charset=utf-8");/*存钱的问题。。存一笔钱。用来大学的生活费。四年。。每个月1000。刚好完整存领取的年利息是1.71%逆推原理第48个月存款 0第47个月存款 存款*每个月的利息 = 1000第46个月存款 存款*每个月的利息 =1000+第47个月的存款第45个月存款 存款*每个月的利息 =1000+第46个月的存款。。$money[47] = 1000;$money[46] = 1000+ $money[47]/(1+0.0171/12);$money[45] = 1000+ $money[46]/(1+0.0171/12);$money[$i-1] = 1000+$money[$i]/(1+0.0171/12);*/?><?ph
-
php趣味编程 - php 打印杨辉三角php趣味编程 - php 打印杨辉三角<?php/*打印杨辉三角11 11 2 11 3 3 11 4 6 4 11 5 10 10 1$i 来代表行数$j 来代表一行第几个数数组$arr 来存 杨辉三角的数$arr[$i][] =来代表一行的数我们先来看下杨辉三角的含义:从第三行开始的数等于它的上一行的数+它上一行左边的数即:$arr[$i][$j] = $arr[$i-1][$j] + $arr[$i-1][$j-1]然后每行的第一个数跟最后一个数都是1即$arr[$i][0] = 1; $arr[$i][$i] = 1然后输出二维数组*/?><?php $arr = array();//用来存杨辉三角的数 $i = 10;//要输出的行数 for($n=0;$n<$i;$n++)&nbs
-
php趣味编程 - php输出国际象棋棋盘php趣味编程 - php输出国际象棋棋盘<?php/*输出国际象棋棋盘1来代表黑色的格子2来代表白色的格子8*8格子1 2 1 2 1 2 1 22 1 2 1 2 1 2 11 2 1 2 1 2 1 22 1 2 1 2 1 2 1$i来代表行$j来代表列格子的颜色用$i+$j来控制奇为黑偶为白每个格子宽高都是30用php的gd2画图函数来*/?><?php $gezi = 30; $width = $gezi*8; $height = $gezi*8; header("Content-type: image/gif"); $img = imagecreate($width,$height);//创建一张图片 $bg_color = imagec
java趣味编程100例相关课程
-
趣味 C++ 入门 C++ 是一门偏向底层的编程语言,应用广,高性能,小到嵌入式,大到分布式服务器,随处可以见到 C++ 的身影。同时很多人对 C++ 又有另外一种认知,复杂、难学,令人望而生畏,事实真的如此吗?你是否深入思考过到底什么样的学习方式才最适合 C++?本课程将带你开启 C++ 的趣味学习之旅,解决难学难理解的问题。本课程将为你介绍 C++ 语言的基础部分,包括环境搭建,C++的基础语法等。除了这些,本课程还将介绍一些计算机的底层原理,例如,计算机中内存的布局、内存管理方式等。对于一些比较抽象的概念,课程中采用动画的形式,形象的展示这些晦涩的内容,揭开 C++ 的神秘面纱。
讲师:Redknot 入门 16382人正在学习
java趣味编程100例相关教程
- 1. 编程示例 接下来我们来分别展示用函数式编程和普通编程方式来实现一个累加器,即输出 1+2+3+…+100 的值。普通方式实现:func main() { a := 0 for i := 1; i <= 100; i++ { a = a + i } fmt.Println(a)}函数式编程实现:package mainimport ( "fmt")type iAdder func(int) intfunc adder() iAdder { sum := 0 return func(v int) int { sum += v return sum }}func main() { a := adder() var s int for i := 1; i <= 100; i++ { s = a(i) } fmt.Println(s)}第 7 行:定义函数类型自定义数据类型;第 9~15 行:定义累加器函数;第 18 行:定义变量 a,并将累加器函数作为值赋给变量 a;第 20~22 行:累加 100 次。执行结果:两者比较,就是后者将整个累加过程作为变量放置在了循环以外,使得整个累加可以脱离循环之外。看起来就像是不断的对一个传入的常数进行加工,就像是流水线的一个工具。所以函数式编程在开发过程中经常会用在对数据的长流程处理。例如,录入身份证号时,要从身份证号中获取年龄,籍贯、性别等信息,就可以使用三个函数对身份证号进行顺序处理。这样写的好处就在于可以随时增删其流程。
- 2. Java 多线程编程方法 由于本节会涉及到 Java 多线程编程,所以需要你能预先掌握 Java 多线程编程的方法。比如,线程的创建,线程的启动,线程之间的同步和线程之间的通信。在 Java 平台下,创建线程的方法有两种:第一,是创建一个用户自定义的线程类,然后继承 java.leng.Thread 类,同时要覆写它的 run 方法,调用它的 start 方法启动线程。例如:class MyThread extends Thread{ @Override public void run() { super.run(); }}new MyThread().start();第二,是创建一个任务类。首先,实现 Runnable 接口,并且重写它的 run 方法。然后,创建 java.leng.Thread 类的对象,同时将 Runnable 的实例通过 java.lang.Thread 的构造方法传入。最后,调用 java.lang.Thread 的 start 方法启动线程。例如:class MyTask implements Runnable{ @Override public void run() { }}new Thread(new MyTask()).start();
- 3. Java 非阻塞式 Socket 编程 介绍 Java 非阻塞式 Socket 编程,就得介绍 Java NIO。Java NIO 是 Java New IO API,有时也解释为 Java Non-blocking IO。通过 Java NIO 可以实现 Java 非阻塞 Socket 编程。Java NIO 是 Java 1.4 支持的,它将 Socket 数据流抽象为一个 Channel(管道),Socket 数据读写是通过 Channel实现的,并且提供了 Buffer 机制,提高数据读写的性能。Java NIO 通常用来编写高性能 Java 服务器程序。在 Java 1.7 以后,Java NIO 对磁盘文件处理得到了增强,可以将 Socket I/O 和 文件 I/O 融合在 Java NIO 中。Java NIO 提供的新的类结构如下:类名称功能说明ServerSocketChannel表示服务端 TCP Socket 的监听 Channel。ServerSocketChannel 提供的工厂方法 open,用于创建它的实例;同时它提供了 accept 方法用于在服务器中接收新的客户端连接请求,返回值是 SocketChannel 类的实例。SocketChannelSocketChannel 表示一个 TCP 通信 Channel,可以通过它的 open 方法创建,也可以通过 ServerSocketChannel 的 accept 方法创建。SelectorJava I/O 事件多路复用机制,用于同时监听多个 Channel 的读、写、监听事件SelectionKey用于表示具体的事件对象ByteBuffer通过 SocketChannel 进行数据读写,依赖 ByteBufferServerSocketChannel 和 SocketChannel 同时支持阻塞式和非阻塞式,默认是阻塞式。可以通过如下的方法,打开非阻塞式。// 配置监听 ServerSocketChannel 为非阻塞模式ServerSocketChannel serverChannel = ServerSocketChannel.open();serverChannel.configureBlocking(false);// 配置服务器新建立的 SocketChannel 为非阻塞模式SocketChannel newSock = serverChannel.accept();newSock.configureBlocking(false);SocketAddress serverAddr = new InetSocketAddress("127.0.0.1", PORT);SocketChannel sock = SocketChannel.open(serverAddr);// 配置客户端 SocketChannel 为非阻塞sock.configureBlocking(false);
- 1.1 Java 中的编译 在 Java 中,程序不是直接被编译为可执行文件,而是被编译为字节码文件, JVM(Java虚拟机)在运行时执行字节码文件。当我们使用 javac 编译器时,Java 源代码文件被编译为字节码文件,字节码文件以扩展名 .class 的形式保存在磁盘上。当程序运行时,字节码文件将被转换为机器代码,并在内存中执行。总的来说,Java 源代码需要被“转换”两次才能被计算机执行:Java 源代码被编译为字节码:由 javac 前端编译器完成;字节码被编译为机器码:由 JVM 的执行引擎完成。下图描述了一个Java程序从编写到编译,再到执行的步骤:
- 2. 元编程的例子 编程中的一项重要哲学是 DRY(不要重复自己)。多次编写相同(或相似)的代码不仅浪费时间,而且在将来需要进行更改时可能会成为一个极大的困扰。在许多情况下,可以通过编写为您编写代码的代码来消除这种重复工作。这是一个示例:考虑一个汽车制造商的应用程序,该应用程序可以存储和访问每个模型的数据。在应用程序中,我们有一个名为CarModel的类:# Example 1class CarModel def engine_info=(info) @engine_info = info end def engine_info @engine_info end def engine_price=(price) @engine_price = price end def engine_price @engine_price end def wheel_info=(info) @wheel_info = info end def wheel_info @wheel_info end def wheel_price=(price) @wheel_price = price end def wheel_price @wheel_price end def airbag_info=(info) @airbag_info = info end def airbag_info @airbag_info end def airbag_price=(price) @airbag_price = price end def airbag_price @airbag_price end def alarm_info=(info) @alarm_info = info end def alarm_info @alarm_info end def alarm_price=(price) @alarm_price = price end def alarm_price @alarm_price end def stereo_info=(info) @stereo_info = info end def stereo_info @stereo_info end def stereo_price=(price) @stereo_price = price end def stereo_price @stereo_price endend每个汽车模型都具有各种功能,例如“立体声”,“警报”等。我们提供了一种获取和设置汽车每个特征值的方法。每个功能都有信息和价格,因此对于我们添加到CarModel类中的每个新功能,我们需要定义两个新方法:feature_info和feature_price。由于每种方法都相似,因此我们可以执行以下操作来简化此代码:# Example 2class CarModel FEATURES = ["engine", "wheel", "airbag", "alarm", "stereo"] FEATURES.each do |feature| define_method("#{feature}_info=") do |info| instance_variable_set("@#{feature}_info", info) end define_method("#{feature}_info") do instance_variable_get("@#{feature}_info") end define_method "feature_price=" do |price| instance_variable_set("@#{feature}_price", price) end define_method("#{feature}_price") do instance_variable_get("@#{feature}_price") end endend在此示例中,我们首先定义一个名为FEATURES的数组,其中包含我们希望为其添加方法的所有功能。然后,对于每个功能,我们使用Ruby的Module#define_method为每个功能定义四个方法。就像示例1中一样,四种方法是获取功能价格和信息的getter和setter方法。唯一的区别是,它们是在定义类时动态编写的,而不是由我们动态编写的。我们使用Object#instance_variable_set()设置每个功能的实例变量的值,并使用Object#instance_variable_get返回每个功能的实例变量的值。# Example 3class CarModel attr_accessor :engine_info, :engine_price, :wheel_info, :wheel_price, :airbag_info, :airbag_price, :alarm_info, :alarm_price, :stereo_info, :stereo_priceend定义这样的getter和setter方法的需求在Ruby中很常见,因此Ruby已经拥有可以做到这一点的方法也就不足为奇了。只需一行代码,即可使用Module#attr_accessor(attr_accessor被称为为类宏(class macro))与示例2中的功能相同。这已经很好了,但我们还可以更完美一点。对于每个功能,我们仍然需要定义两个属性(feature_info和feature_price)。理想情况下,我们应该能够调用一个与示例7相同的方法,但只需列出每个功能一次即可# Example 4class CarModel # define a class macro for setting features def self.features(*args) args.each do |feature| attr_accessor "#{feature}_price", "#{feature}_info" end end # set _info and _price methods for each of these features features :engine, :wheel, :airbag, :alarm, :stereoend在此示例中,我们采用CarModel#features的每个参数,并将它们传递给具有_price和_info扩展名的attr_accessor。尽管这种方法比示例3中的方法稍微复杂一些,但它可以确保每个功能都被视为相同,并且意味着将来添加更多属性将更加简单。注意事项:您可以使用元编程做一些非常酷的事情,例如用很少的代码行添加大量功能,需要注意的是,您一定要注意代码的可读性,过度的元编程会使您的代码难以理解和调试。这看起来是不是很高大上,让我们开始元编程的学习吧~
- 第一个 Java 程序 本节我们将以Windows操作系统为例,编写并执行第一个Java程序。在这之前,请确保你的操作系统上已经安装了JDK
java趣味编程100例相关搜索
-
j2ee
j2ee是什么
jar格式
java
java api
java applet
java c
java jdk
java list
java map
java script
java se
java socket
java swing
java switch
java web
java xml
java 程序设计
java 多线程
java 环境变量