関数型プログラミング、この単語は関数とプログラミングという 2 つの名詞で構成されています。プログラミングという言葉を説明する必要はありません。誰もがやっていることです。実際、関数という言葉は切り離して考えると馴染みがありませんが、この 2 つの組み合わせは何でしょうか? 以下の記事では、Java8 関数型プログラミングに関する関連情報を紹介します。
はじめに
前の記事では、ラムダとストリームについて簡単に学びました。この章では、関数型プログラミングの考え方を確認して理解します。 関数型という用語が何度も出てきますが、それはラムダのことを指しているのでしょうか?もしそうなら、関数型プログラミングはあなたにどのような利点をもたらしますか? , たとえば、料理をするときは、通常、慣れ親しんだ調理方法に従って、まず野菜を洗い、次に野菜を切り、油を熱し、食器を置き、そして...これは一連の命令のように見えます。これを命令型プログラミングと呼びます。その特徴は、シリアル化され命令型である工場の組立ラインやコンピューターの命令処理によく似ています。
CookingTask cookingTask = new CookingTask();
cookingTask.wash();
cookingTask.cut();
cookingTask.deepFry();
cookingTask.fried();
...
宣言プログラミング
public class CookingDemo { public void doTask(String material, Consumer<String> consumer) { consumer.accept(material); } public static void main(String[] args) { CookingDemo cookingDemo = new CookingDemo(); cookingDemo.doTask("蔬菜", material -> System.out.println("清洗" + material)); cookingDemo.doTask("蔬菜", material -> System.out.println(material + "切片")); cookingDemo.doTask("食用油", material -> System.out.println(material + "烧热")); cookingDemo.doTask("", material -> System.out.println("炒菜")); } }
ここでクックします。実装の詳細は関数ライブラリに任せられます。このようにして、クッキング プロセスに他のステップを追加すると、その関数をすぐに理解できるようになります。 doTask メソッドを呼び出して処理する材料を渡すだけで済みます。たとえば、卵を処理するメソッドを記述することなく、食用油を加熱する前に卵を溶きたい
cookingDemo.doTask("鸡蛋", material -> System.out.println(material + "打碎搅拌均匀"));
。
関数型プログラミングとは
異なる言語コミュニティは、それぞれの言語の特徴に対して排他的な賞賛を抱いていることがよくあります。 Java プログラマが関数型プログラミングをどのように定義しているかについて話すのは時期尚早ですが、それはまったく問題ではありません。私たちは、関数型プログラミングのスタイルに準拠したコードではなく、優れたコードを書くことを重視しています。
文字列型とブール型のパラメータを入力し、整数のパラメータを出力する関数を設計することを想像してみましょう。
int pos = 0;
public Integer foo(String str, boolea flag){
if(flag && null != str){
pos++;
}
return pos;
}
この例には入力と出力があり、同時に各呼び出しで外部変数の値も更新される可能性があります。このような関数を副作用付き関数と呼びます。
public Integer foo(String str, boolea flag){ if(flag && null != str){ return 1; } return 0; }
このタイプの関数と Java プログラミング言語で見られる関数の違いは非常に重要です ( log や sin などの数学関数には副作用があることを想像してください)。 特に、数学関数が同じパラメータで呼び出された場合、返される結果は同じでなければなりません。ここでは、今のところ Random.nextInt のようなメソッドについては考慮しません。
この 2 つの違いを定義したい場合、前者を純粋関数型プログラミングと呼び、後者を関数型プログラミングと呼びます。
実際のプログラミングでは、標準ライブラリ関数を含む多くの古いコードには副作用があるため、Java 言語を使用して純粋に関数的な方法でプログラムを完成させることは困難です (Scanner.nextLine の呼び出しには副作用があり、最初から始まります)。 a ファイルから 1 行を読み取ります。通常、2 つの呼び出しの結果は完全に異なります)。システムのほぼ純粋に機能的な実装を作成したいと考えており、コードに副作用がないことを確認する必要があります。このような関数またはメソッドには副作用がないと仮定します。実行のためにメソッド本体に入るとき、フィールドの値は 1 ずつ増加し、メソッド本体を終了する前に、フィールドの値は 1 ずつ減少します。シングルスレッド プログラムの場合、このメソッドには副作用がなく、機能実装とみなすことができます。
関数型スタイルを構築するためのガイドラインは、「関数型スタイル」と呼ばれる関数またはメソッドはローカル変数のみを変更できるということです。また、それが参照するオブジェクトは Final である必要があります。 すべての参照型フィールドは不変オブジェクトを指します。
概要
以上がJava8 での関数型プログラミングの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

クラスローダーは、統一されたクラスファイル形式、動的読み込み、親代表団モデル、プラットフォーム非依存バイトコードを通じて、さまざまなプラットフォーム上のJavaプログラムの一貫性と互換性を保証し、プラットフォームの独立性を実現します。

Javaコンパイラによって生成されたコードはプラットフォームに依存しませんが、最終的に実行されるコードはプラットフォーム固有です。 1。Javaソースコードは、プラットフォームに依存しないバイトコードにコンパイルされます。 2。JVMは、特定のプラットフォームのバイトコードをマシンコードに変換し、クロスプラットフォーム操作を保証しますが、パフォーマンスは異なる場合があります。

マルチスレッドは、プログラムの応答性とリソースの利用を改善し、複雑な同時タスクを処理できるため、最新のプログラミングで重要です。 JVMは、スレッドマッピング、スケジューリングメカニズム、同期ロックメカニズムを介して、異なるオペレーティングシステム上のマルチスレッドの一貫性と効率を保証します。

Javaのプラットフォームの独立性とは、書かれたコードがJVMが変更なしでインストールされた任意のプラットフォームで実行できることを意味します。 1)JavaソースコードはBytecodeにコンパイルされ、2)BytecodeはJVMによって解釈および実行されます、3)JVMは、プログラムが異なるオペレーティングシステムで実行されることを確認するために、メモリ管理とガベージコレクション機能を提供します。

JavaApplicationScanIndEDENCOUNTIONPLATFORM-SPECISTESUESUSESEJVM'SABSTRACTION.REASONSINCLUDE:1)NativeCodeandLibraries、2)OperatingSystemDifferences、3)JVMimplementationVariations、および4)HardweardePencies.TomiteTETETETESES、DEVELAPERSHOULD:1)

クラウドコンピューティングにより、Javaのプラットフォームの独立性が大幅に向上します。 1)JavaコードはBytecodeにコンパイルされ、異なるオペレーティングシステムでJVMによって実行され、クロスプラットフォーム操作が確保されます。 2)DockerとKubernetesを使用してJavaアプリケーションを展開して、携帯性とスケーラビリティを向上させます。

java'splatformendenceallowsdevelopersowritecodeodeonceanceandonitondeviceoros withajvm.

Dockerなどのコンテナ化技術は、Javaのプラットフォームの独立性を置き換えるのではなく、強化します。 1)環境全体の一貫性を確保し、2)特定のJVMバージョンを含む依存関係を管理する、3)展開プロセスを簡素化して、Javaアプリケーションをより順応性と管理しやすくする。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版
中国語版、とても使いやすい
