約 1,558,413 件
https://w.atwiki.jp/yo-kichi/pages/83.html
スコーラとは Javaスコーラ2010まとめ 参考にして授業をやるかた、人に教える方へ 目標 プログラミングを楽しむ 自分でプログラムを作れるようになる TODO 現状ではこのwikiの情報を活用できない 情報の整理、集約が必要 javaスコーラ2010年度反省 2010年 ガイダンス HelloJava, 変数 条件分岐、繰り返し、変数続き 配列、繰り返し 今までの復習 クラスとメソッド メソッドの種類 コンストラクタ、メソッドの使い方 GUIを使ったプログラム カプセル化 問題集 ゲーム 問題続き 夏休みの予定を決める 問題集・ゲーム続き 夏休みJavaスコーラ特設ページ 後期ガイダンス 復習とOOP OOPなプログラムを読もう 継承 スレッド ソート、スタック データ構造(Listなど) AppletでGUI Timerつくってみるテスト 前回と同じ 復習 復習とプログラムの改良 自分で考えて作るプログラム 自分で考えて作るプログラム2 スコーラwikiテンプレ **今回の目標 **役割り分担, 内容 **検討中 **準備 **宿題 問題と答え **反省 備考 スコーラノートPCを持っていく プログラミングに慣れるまで、エディタで。 準備の心得 用語 オブジェクト指向ってなによ 括弧の呼び方 ひらめいたときようページ コメント、意見など Java スコーラ 2010
https://w.atwiki.jp/java_pro/pages/19.html
import java.io.*; public class Find1 { public static void main(String[] args){ if (args.length != 1) {//コマンドラインで入力した引数が間違っている System.out.println("使用方:java Find1 検索文字列 検索対象ファイル"); System.out.println("例:java Find1 System Find1.java"); System.exit(0);//プログラムを終了する。 } String findstr = args[0];//コマンドラインで入力された検索文字列を取得 System.out.println("検索文字は「" + findstr + "」です"); BufferedReader r = new BufferedReader(new InputStreamReader(System.in));//BufferedReaderを用意 try { String line;//ファイルからの読み込み用変数line int linenum = 1;//行数をカウントのための変数 while ((line = r.readLine()) != null){//一行取得、EOFなら終了する。 int n = line.indexOf(findstr);//indexOfメソッドでfindstrを検索。 if (n = 0) {//検索文字列が見つかったか? System.out.println(linenum + " " + line);//行の番号とその行を表示 } linenum++;//次の行へカウントする。 } } catch (IOException e) { System.out.println(e); } } }
https://w.atwiki.jp/funf/pages/28.html
数値 DATE import java.util.Calendar; import java.util.Date; public class testDate { public static void main(String[] args){ Calendar cl = Calendar.getInstance(); //年、月、日、時、分、秒 cl.set(2006, 6, 1, 0, 0, 0); //カレンダーを時間に Date d = cl.getTime(); System.out.println(d); } } 注意:月のみ0から始まる。11=12月 比較 d.before(d2) //d d2 d.after(d2) //d d2
https://w.atwiki.jp/java_syn/pages/12.html
java勉強
https://w.atwiki.jp/dotcom/pages/88.html
はじめてのじゃばー。 Javaってプログラム言語のことかと思ってたの、いやそうなんだけどもっと大きな意味を持つんだって。 でもまだ今は開発で使うプログラム言語だと思ってるよ。 Javaについての最初の記事 Javaはじめました 「Java」を含む記事 Javaタグ Javaを含む記事一覧 Java記事 Calendar/日付チェックしたいの JavaAPI/splitで最後の空白が反映されないの SimpleDateFormat SimpleDateFormat/Mとm はじめました ファイルを作成する 変数の宣言 文字コードを指定して外部ファイルを読み書きしたいの 日付型はCalendarを使って 1から作るWin環境/000はじめに
https://w.atwiki.jp/java_pro/pages/20.html
import java.io.*; public class IndexOf { public static void main(String[] args){ String line; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { line = reader.readLine(); while (line != null){//lineがnullで無い限り繰り返す int n = line.indexOf("java");//indexOfメソッドで"java"を検索 if (n = 0){//indexOfメソッドの戻り値が0以上ならば(見つからない場合は-1を返す。) System.out.println("じゃばじゃば");//"じゃばじゃば"を表示 } line = reader.readLine();//次の入力 } } catch(IOException e) { System.out.println(e); } } }
https://w.atwiki.jp/funf/pages/6.html
外部リンク NetBeans 開発環境。ノーマル状態だとEclipseより好き。 内部 JAVA 初期設定いろいろ JAVA 参照型変数 JAVA 可変長配列 JAVA ファイル操作 JAVA JUnit JAVA 日付型 JAVA 文字列
https://w.atwiki.jp/java_pro/pages/70.html
Javaプログラムを実行する際の引数について復習しましょう。 コマンドプロンプトでプログラムのソースコード が置かれているフォルダに移動して。 javac Hogehoge.java と「javac」というコマンドの後にファイル名を指定してあげると コンパイルができます。 コンパイルをすると「Hogehoge.class」のように クラスファイルが同じフォルダに生成されます。 ここで java Hogehoge と「java」というコマンドの後にクラス名を指定してあげると プログラムが実行されます。 コマンドラインの引数(実行時の引数) プログラムを実行する際に、メソッドのように引数を渡すことが できます。 プログラムはmainメソッドから実行されますよね。 public static void main(String[] args) というふうにmainメソッドを宣言すると思いますが、ここの 「args」というString配列にコマンドラインの引数(実行時の引数)が 渡されます。 たとえば、 java Hogehoge moge fuga java のようにプログラムを実行したとすると "moge fuga java"の部分がコマンドラインの引数として渡されます。 これはプログラムで String args[] = {"moge", "fuga", "java"}; と宣言されたような形になります。 なので、この実行時にはargs[0]には"moge"という文字列が入っています。 ※プログラムを実行する際に任意に引数を渡すことができるということなので、 コマンドラインの引数を渡していなければargs[0]などは存在しない。 ※コマンドラインの引数として渡すことが出来るのは文字列のみ ○3級の人向けの課題。 コマンドライン実行時に受け取った引数を番号を付けて順番に 表示するプログラム「ArgsTest01.java」を作りましょう。 例) java ArgsTest01 hogehoge mogemoge fugafuga あなたが入力したのは 1 hogehoge 2 mogemoge 3 fugafuga java ArgsTest01 あなたが入力したのは ※JCPadでコマンドラインの引数を指定して実行する場合理は、 コマンド(C)の右のエリアに直接コマンドを入力しましょう。
https://w.atwiki.jp/javaapl/pages/13.html
オブジェクト指向プログラミング言語であり、Javaのプログラムの実行環境および開発環境をいう。 Javaを実行するために必要な物 ソースコード API(J2EE,J2SE等) コンパイラ Java VM (Java Virtual Machine) API あるプラットフォーム(OSやミドルウェア)向けのソフトウェアを開発する際に 使用できる命令や関数の集合のこと。また、それらを利用するためのプログラム上の手続きを定めた規約の集合。 ライブラリの仕様(くわしく説明してある物)のこと。 何かの機能のことも「API」という。 J2SE Javaを使うための最も基本的なAPI(関数)の塊 J2EE Web上でJavaを使うためのちょっと高級なAPI(関数)の塊です。 Java Virtual Machine java実行環境(JRE)のこと。Java仮想マシンのこと。 コンパイルされたソースコードを読み込み、実行するために必要な物。
https://w.atwiki.jp/tamorintech/pages/14.html
別ページにまとめてるもの。 Javaのプリミティブラッパークラスはすべて不変である。 サーブレットのセッション管理(2012/3/18 旧ブログから移行) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) 集約とコンポジション(2012/3/18 旧ブログから移行) サーブレットコンテナ(2012/3/18 旧ブログから移行) JNDIってどんなものなのか。(2012/3/7)何となくの理解。 Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行)DB側の話。 Java側の話。 上記からわかったこと! PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) アノテーションとは。(2012/2/4 旧wikiから移行) 別ページにまとめてるもの。 log4j Android Javaのプリミティブラッパークラスはすべて不変である。 よって、ラッパークラスオブジェクトを参照値渡ししてメソッド内で計算しても、メソッド呼び出し側のオブジェクトには結果が反映されない。 private void exec() { Integer value = new Integer(5); System.out.println("メソッド実行前のint値 " + value.toString()); increment(value); System.out.println("メソッド実行後のint値 " + value.toString()); } private void increment(Integer integer) { // 内部的には // integer = new Integer( integer.intValue() + 1 ); // のようなことが行われている。つまりメソッド内のinteger は別の新しいオブジェクトを参照することになる。 integer++; System.out.println("メソッド内での計算結果 " + integer.toString()); } メソッド実行前のint値 5 メソッド内での計算結果 6 メソッド実行後のint値 5 サーブレットのセッション管理(2012/3/18 旧ブログから移行) 今日はホントにメモだけ!(時間ないからね!) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) とりあえずメモだけアップしておく。まだ目的は達成してないけど・・・。 知りたいことは以下のこと。Tomcat(サーブレットコンテナ)がクラスをロードしたり、サーブレットのinit / service / destroy の呼び出しを行っている部分の詳細な動きが知りたい。 JSPリソースへのリクエストを受け取ったとき、それをJSPから変換したサーブレットへのリクエストへと切替えている部分の詳細な動き。 Tomcatはサーブレットのインスタンスをどのようにしてシングルトンで管理しているのか。 やっぱりTomcatのソースをじっくり読みたい・・・。 集約とコンポジション(2012/3/18 旧ブログから移行) 新人の後輩から質問されて答えられず。そもそも明確な違いは定義しにくく、「曖昧」らしい。 集約とコンポジション、Javaのコードに落とせばどちらも同じ。「全体」のメンバ変数に「部分」のオブジェクトが定義されていることになる。 上記は車クラスが「全体」であるのに対し、車体・エンジン・タイヤクラスが「部分」にあたる。ひし形の色は白なので集約の関連があることを表している。 車クラスをJavaコードにすると以下のようになる。 public class Car { private Body body; private Engine engine; private Tyre tyre; ・・・ } クラス図のひし形の部分が黒で塗りつぶされていて、コンポジションをあらわしていたとしても車クラスは上記と同じコードとなる(のはず)。 他の技術系の記事を参考にすると、コンポジションは両オブジェクト間のライフサイクルが同じ、もしくは強い依存の関係にある場合に使用する。 ということは、集約とコンポジションでJavaコードに違いが出てくるところと言えばオブジェクトの生成の仕方とかだろうか? 車クラスと車体・エンジン・タイヤクラスがコンポジションの関連にある場合、車クラスのコンストラクタで車体・エンジン・タイヤクラスのオブジェクトを必ずnewするとか。もしくはメンバ変数の宣言部でnewしちゃうとか。 public class Car { private Body body = new Body(); private Engine engine = new Engine(); private Tyre tyre = new Tyre(); ・・・ } まぁその辺りも想定するシナリオとかで変わってくる気がする…。 とにかく、集約とコンポジションの違いについて深く悩むことにあまり価値はないと自分に言い聞かせる。(笑) サーブレットコンテナ(2012/3/18 旧ブログから移行) サーブレットコンテナというキーワードで少し勉強した。一番知りたかったのは、「Webサーバ」と「サーブレットコンテナ」の機能の切り分け。 サーブレットコンテナについては前よりイメージがわいてきた。Servlet API / JSP API の参照実装(RI)であること。HttpServletの実装をTomcat等のサーブレットコンテナは持っている。 サーブレットのインスタンス化や破棄など、ライフサイクルの管理を行っていること。 3つの動作形態の種類があること。スタンドアロン型-サーブレットコンテナ自身がWebサーバを内蔵している。Tomcatはこれにあたるので、単体でサーブレットアプリケーションを動かせる。 内部プロセス型 外部プロセス型 Tomcatの設定ファイルを覗いてみるとなんとなく仕組みがわかってくる。なんとなくだが・・・ Connector がWebサーバ機能を担う定義なんじゃなかろうか。 他のWebサーバを使用するため、TomcatのWebサーバの機能をOFFにするにはserver.xmlの Connector 要素を削除するって書いてあったし。 ここでの機能は、クライアントからのリクエストをサーブレットコンテナ(エンジン)に渡すこと。 結局、Webサーバの詳細な機能ははっきりとわからなかった。サーブレットコンテナというキーワードを絡めずに、Webサーバそのものについて今後調べないと! ところで、サーブレットアプリケーションのメインプログラムは何なのか?Javaプログラムはmainメソッドの起動から始まる、と教えてもらったはず。ちょっと調べてみたところ、Tomcatの場合、Bootstrapクラスがそれに当たる模様。 確かにBootstrapクラスにはmainメソッドがあり、Tomcatの起動用スクリプトを見てみてもBootstrapクラスをjavaコマンドにより実行しているようだ。 ただこのBootstrap.classがbootstrap.jarとcatalina.jarという二つのjarファイルに存在する。 これは同じクラス(全く同じモジュール)と考えてよいのか? あ、ちなみにここまで、Tomcat 6についての話。。 5.5のディレクトリ中身を見てみたらまたちょっと違うようだ。あまり気にしなくても大丈夫かな…? JNDIってどんなものなのか。(2012/3/7) JNDIとはJava Naming and Directory Interfaceの頭文字を取ったもので、Javaから •ネーミング・サービス •ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様です。 だそう。こういう定義は他でもいくつか目にするんだが、いまいちイメージがわかない。 何となくの理解。 本質ではなくwebアプリ(サーブレット)に限定した理解だが、DB接続をJNDIで行う場合は以下な感じ。DB接続情報(=DataSource)をサーバーの設定ファイル(Tomcatの場合はcontext.xml)に定義する。その実態はjava.sql.DataSourceクラス(のオブジェクト?)である。 Javaプログラムでは、java.naming.InitialContext#lookupメソッドで、定義したDataSourceを取得する。 DataSource#getConnectionメソッドでjava.sql.Connectionを取得し、DB接続が開始できる。 以下を読むと上記の実装例があり、どんなものかが少しわかった。ありがたい。http //www.javaroad.jp/opensource/js_tomcat8.htm http //blogs.yahoo.co.jp/kensinisnek/11707751.html Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行) DB側の話。 標準のSQL(?)では、日付・時刻のデータを持つカラムの型は以下のとおりとなっているようだ。DATA日付のみのデータを持つ。 TIME時刻のみのデータを持つ。精度(桁数?)は指定できる。 TIMESTAMP日付+時刻のデータを持つ。精度は指定できる。 Java側の話。 ここで扱う日付・日時に関するクラスの継承関係は以下のとおり。java.util.Datejava.sql.Date java.sql.Time java.sql.Timestamp java.util.Date日付と日時の両方のデータを持つ。時刻はミリ秒まで。 java.sql.Date日付のデータのみ持つ。基底クラス(java.util.Date)の時・分・秒・ミリ秒には0が設定される。 java.sql.Time時刻のデータのみ持つ。基底クラス(java.util.Date)の年・月・日には1970年1月1日が設定される。 java.sql.Timestamp日付と時刻のデータを持つ。時刻はナノ秒まで。 java.sql.ResultSetインターフェースについて。getDateメソッド:java.sql.Dateを返す。 getTimeメソッド:java.sql.Timeを返す。 getTimestampメソッド:java.sql.Timestampを返す。 上記からわかったこと! テーブルに対応するデータオブジェクト(エンティティクラス)を設計するとき、DBのDATE、TIME、TIMESTAMPのカラムに対応するプロパティは、java.sqlパッケージのクラスを使えってことだね。 PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) PATH環境変数は、OSがプロンプトから入力されたコマンドに対するプログラムを検索する際の検索先である。 CLASSPATH環境変数はJavaソースのコンパイル時、プログラム実行時に必要となるクラスファイルを検索する際の検索先である。 よって2つはなんら関係ないものである。 サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットにおける認証方式の種類は以下のものがある。Basic認証:HTTPのBasic認証を使った方式。 Digest認証:HTTPのBasic認証を使うが、パスワードをダイジェストエンコードして暗号化する。 Form認証:HTMLのformを使ってユーザーIDとパスワードを入力する。 Client-Cert認証:クライアント証明書を使って認証を行う方式。 Tomcat標準のレルムレルムとは、ユーザーIDとパスワードをサーバー側でどのように管理するかの設定方法である。XMLベースのテキストファイルやデータベース等がある。 UserDatabaseRealmTomcatでデフォルトで設定されている方式。 ID、パスワード、ロールをtomcat-user.xmlファイルに記載する。 UserDatabaseに対して行った変更が変更情報としてtomcat-user.xmlファイルに書き込まれる? JDBCRealmID、パスワード、ロールをデータベースに格納し、JDBC経由で認証を行う。 JNDIRealmNIS、ActiveDirectory等のディレクトリサービスにID、パスワード、ロールを格納しJNDI経由で認証を行う。 DataSourceRealmJDBC経由で認証を行うが、JDBCへの接続にJNDIルックアップを使用する。 サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) サーブレットのインスタンスは(基本的に)1つのみサーブレットコンテナにより作成される。 クライアントからの要求は複数同時に処理される。1リクエスト=1スレッドと考えてよい。 スレッドに関して、サーブレットコンテナは以下の特徴がある。サーブレットコンテナはスレッドプールを持っており、そこに複数のスレッドを蓄えている。 サーブレットコンテナはクライアントからリクエストを受け付けると空きスレッドを割り当て、サーブレットに渡して処理を移譲する。サーブレットのインスタンス数は1つである。 スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) ThreadLocalは、スレッド毎の値を保持する為のクラス。 あるクラス(のインスタンス)がマルチスレッドで呼ばれる際に、スレッド毎に異なる値(インスタンス)を使いたい場合に使用する。 自分でThread(やRunnable)を使ってマルチスレッド化しているならスレッド毎の値が保持できるので、ThreadLocalを使用しても意味がない。 しかし、Webアプリケーション(サーブレット)は1つのインスタンスがマルチスレッドで呼ばれるので、そのスレッド毎に別のインスタンスを保持したいときはとても便利である。 アノテーションとは。(2012/2/4 旧wikiから移行) アノテーションとは、プログラムの動作に影響を与えない注釈、メタデータ。クラスやメソッド、パッケージ等に付与する。 コメントとの主な違いは以下のとおり。プログラムでアノテーションを読み取って処理できる。 アノテーションはコンパイラの動作に影響を与える。 標準アノテーションとして以下のようなものが定義されている。(J2SE 5.0)Override Deprecatedそのメソッドの使用が推奨されないことを示す。(Javadocの@deprecatedと同じ意味を持つ。) そのメソッドを使用するとコンパイル時に警告が出る。 SuppressWarningコンパイル時の警告を抑制する。 抑制する警告の種別はアノテーションの文字列配列の引数を渡すことにより指定が可能。 アノテーションの定義の仕方。「@interface」でアノテーションが定義できる。 以下のように型定義の本体が空のアノテーションをマーカーアノテーションという。 public @inteface Myannotation{ } 同じアノテーションをクラス、メンバ変数、メソッド、それぞれに適用できるようだ。 @Myannotation() public class TestMain { @Myannotation() private String var; @Myannotation() public static void main(String[] args) { } }