タグ

javaとprogrammingに関するZephidのブックマーク (23)

  • Java やってる人が C# を使うとはまること - ぐるぐる~

    ここでは、Java SE 5.0 以降を知っている人が C# 2.0 を使うことになった場合を考える*1 *2。 あと、ライブラリについては触れないことにする*3。 命名規約 まず、命名規約が全然違う。Java ではメソッド名にキャメル形式*4を使うけど、C# では Pascal 形式*5を使い、Java では定数名に大文字アンダーバー区切り*6を使うけど、C# では Pascal 形式を使う。 C# に関する命名規約としては、ここだとかここだとかにあるので、参考にするといい。 間違っても、オブジェクト倶楽部のは参考にしないこと*7。 struct の扱い Java ではユーザ定義型は全て参照型だけど、C# では値型も作成できる。また、標準ライブラリの中に struct で定義されたものもある。 で、何にはまるかというと、struct は class と違い、「値渡し」される*8、つまりコ

    Java やってる人が C# を使うとはまること - ぐるぐる~
  • ジェネリック: Java vs C#

     ジェネリック: Java vs C# 概要 2005 年初頭に公開された Java 言語仕様第 3 版 (開発実行環境は 2004 年秋に先立って公開されていた) と 2005 年 6 月に ECMA に承認された C# 言語仕様第 3 版 (開発実行環境は 2005 年末に公開された) では、共にジェネリック (ジェネリックス、ジェネリクス、総称: generics) という新しい概念が導入され、文法もそれに伴って変化している。 Java と C# はどちらも静的な型付けを行うオブジェクト指向プログラミング言語であり、C 言語を基にした 似たような文法をしている。 この記事では、Java 言語のジェネリックと C# 言語のジェネリックを、その機能や文法の違いを中心に比較する。 ジェネリックな型 ジェネリックな型は、どちらの言語でも山型の括弧を使って表される。ジェ

  • 実装パターン | メソッド - Tbpgr Blog

    概要 メソッドについて (この書籍のベースはJavaの話) 詳細 複合メソッド 他のメソッドを呼び出すコードでメソッドを構成する。 各呼び出しは処理の粒度を揃える。 メソッド分割のオーバーヘッドは可読性に比べたら大したものではない。 意図を示す名前 利用目的に即した命名を行うこと。 処理の詳細を伝えるような命名よりも目的のみを伝える方がよい。 メソッドの可視性 Javaはpublic,パッケージ,protected,privateの可視性がある。 公開範囲が広いほど以降の変更に対する製薬が厳しくなる。 公開範囲は可能な限り狭くすることが望ましい。 メソッドオブジェクト 複雑な長い処理がある場合はその一部をオブジェクトとして独立させる。 例えば下記のような国民総生産を計算する長い処理があったとします。 void calclateGnp() { GDPの計算開始 : ※長い処理 GDPの計算終

    実装パターン | メソッド - Tbpgr Blog
  • 今そこにあるJava EE(J2EE) -part1- — ありえるえりあ

    今そこにあるJava EE(J2EE) -part1- 今そこにあるJava EE(J2EE) 。Java EEの基です。 はじめに 2009年末にはJava EE6もリリースされそうな今日この頃 今さらJava? 今さらサーブレット? という人もいそうですが JavaJava EEは大局的に見ればよくできていると思うので PHPの人も、Railsの人も、Seasideの人も、Kahuaの人も、教養として、あるいは対照として知っておいてよいと思います 技術評論社から2009年9月に出版予定の書籍「Perfect Java」の宣伝も兼ねています

  • いいから聞け! 俺が文字コードについて教えてやるよ その2(Javaの文字コード編) - 谷本 心 in せろ部屋

    前回のエントリーでは「Java関係ないやん」的なツッコミも受けましたが、 今回からは、Javaを前提にしていきます。 Javaで文字から文字コードを作る 新人くん「Javaで文字から文字コードを作りたいんですが、どうすれば良いんですか?」 先輩社員「getBytesすれば一発だね」 新人くん「getBytesした後のバイト配列から上手く文字列を作れないんですが・・・」 先輩社員「それは別の話だね」 前回のエントリーでは、WordやIMEを利用した文字と文字コードの変換方法を説明しましたが、 では、Javaではどうやれば良いのでしょうか。 Javaで文字から文字コードを作るには、 先輩社員も言っている通り、String#getBytes(charset)するだけです。 具体的なコードは、以下のようになります。 String str = "あいうえお"; byte[] utf8 = str.g

    いいから聞け! 俺が文字コードについて教えてやるよ その2(Javaの文字コード編) - 谷本 心 in せろ部屋
    Zephid
    Zephid 2015/05/29
    なんか助かった
  • Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)

    used to replace an incoming character whose value is unknown or unrepresentable in Unicode compare the use of U+001A as a control character to indicate the substitute function

    Zephid
    Zephid 2015/05/27
    外部入力の中に、このコードがあるか検知したいのだけど、標準ライブラリのReader周りにそういう機能はなさげ。一般的にそういう需要ってないのかね…
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
  • Javaプログラマが知るべき9のこと - @katzchang.contexts

    はじめに ソースコードは設計であり、コードの記述は品質に直結するのは言うまでもない。ちなみに、プログラマにとって特に重要なのは保守性だ。コードは書いた直後から保守対象となるからだ。コードは要求文書の範囲で動けばいいと思っている人がいれば今すぐ、ソースコードをコピペして100klに増えるプラグインがいつの間にかインストールされる呪いをかけてあげよう。幸い、ここを読んでいる人にはそんな人はいないだろうと思うけれども。 ということで、コードの品質を下げる要因、すなわちシステム全体の品質を下げる要因となり、かつ使われやすいアンチパターンを挙げ、対策を検討していくことにする。対象は以下: 出力パラメータ 処理状態返却 意味のある配列 無意味な初期化 多すぎるtry-catch 暗黙の順序 コンパイラ警告の無視 過剰なコメント e.printStackTrace() 出力パラメータ メソッドの引数にオ

    Javaプログラマが知るべき9のこと - @katzchang.contexts
  • Java変態文法最速マスター - プログラマーの脳みそ

    Java基礎文法最速マスター - いろいろ解析日記をリスペクト。 Javaの変態文法・技法一覧です。Javaの基礎をある程度知っている人はこれを読めばJavaの変態をマスターしてJavaを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1.基礎 エンクロージング型内部classの作成 外部classのインスタンスに紐付くインスタンスを生成します。外部クラスのインスタンス - 内部クラスのインスタンス間に、クラス - インスタンスのような関係を持たせることができます。 public class Outer { public class Inner { } } というようなクラスを作った場合、 Outer o = new Outer(); Inner i = o.new Inner(); となります。new

    Java変態文法最速マスター - プログラマーの脳みそ
    Zephid
    Zephid 2011/07/06
    Cでこれと同じようなことやってるのを見たことがあるけど、同じ人かな?
  • Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指して

    Java5における総称型(generics)の導入に伴い、Javaの型システムは以前と比べて高機能になった反面、理解するためのハードルが高くなっています。もちろん、Javaの型についてきちんと理解するためには言語仕様を勉強すればよいのですが、手っ取り早く理解するための方法としてリフレクションAPIを使ってみるというのが有効です。リフレクションAPIの先祖はJava1.xのころから存在しており、フィールド、メソッド、クラスなどの情報を実行時に取得するためのものですが、総称型に合わせてJava5から新しいAPIが追加されています。ここではリフレクションAPIを使い、Java5の新しい型システムについてまとめてみたいと思います。 JDK1.4までの型はすべてClassクラスのインスタンスに一対一対応する JDK1.4までに存在していた型はパターンに分けると以下の3通りに分類できます。 基型(i

    Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指して
  • わかりずらい Java の参照渡し (1/3) (tec-q note)

    Java の引数はプリミティブ型であれば値渡し、オブジェクトであれば参照渡しというのは周知の事実です。 その参照渡しは "オブジェクトの参照" を渡すのですが、広く知られている "変数の参照" を渡す方法と区別されていないためか、しばしば混乱する場合があります。 例を挙げるとわかりやすいと思います。下のソースを見てください。サンプルA public class SampleA { public static void main(String[] args) { String s1 = "main メソッド実行"; ・・・1 SampleA sampleA = new SampleA(); sampleA.test1(s1);        ・・・2 System.out.println(s1);     ・・・4 } public void test1(String s2) { s2 =

    Zephid
    Zephid 2010/08/31
    以前ここでハマったのでメモ。
  • 第8章 インナークラス(SJC-P 1.4)

    ≫目次 ■「通常」のインナークラス ■メソッドローカルなインナークラス ■無名インナークラス ■静的ネストクラス(トップレベルネストクラス,静的インナークラス) インナークラスのインスタンスは、アウタークラスの全てのメンバーにアクセス可能(privateとして宣言されているメンバーも例外ではない)。静的ネストクラスは除く。 ■「通常」のインナークラス 位置はメソッドと並列。 「通常」のインナークラスは、static宣言をいっさい持つことが出来ない。 □インナークラスへのアクセス 1)アウタークラスのコード内の非静的メソッドからインナークラスへアクセス。 <呼び出し方はノーマル> class MyOuter{ private int x=7; public void makeInner(){ MyInner in = new MyInner(); //MyOuter.MyInner in =

    Zephid
    Zephid 2009/10/07
    無名インナークラス内で新たなメソッドを定義しても、そのメソッドを無名インナークラスの外から呼び出すことは出来ない。
  • インナークラス - Java 入門 JSP サーブレット etc.

    Zephid
    Zephid 2009/10/07
    無名インナークラスについて
  • Tomcat5.5 で DataSource を使う | dTblog

    これまで eclipse で製造していたWebアプリケーションを、Profiler にかけるため、NetBeans に必死で移行。その結果、DataSource でコケる。 javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null' やっぱり設定をコピペするだけでは、動いてくれないらしい。ううう。 原因は Tomcat にあり。これまで Tomcat5.0 で開発していたのだけれども、NetBeans5.0 にバンドルされていたのは Tomcat5.5 だった。「0.5くらいなら大丈夫だべ」と思って強気で攻めたんだけど、だいぶ違うみたいでして。トムさん、頼むよ。 具体的には、JNDI リソースの指定方法が変わった。設定は、<ResourceParams> タグを使

    Zephid
    Zephid 2009/07/24
    去年もこれに引っかかって、今日もまた。覚えててよかった。DataSourceの使い方を調べると猫4.1のサンプルが真っ先に出てくるので、それを見ながらやるとハマる・・・
  • Java Tips: かしこいロック

    単純なロックの問題点 Java にはマルチスレッドプログラミングにおける一般的な排他制御を記述するのに適した synchronized ブロック、synchronized メソッドという構文があり、保護したいデータにアクセスする全てのコードをこれらの構文を使って同期化すれば、排他制御は簡単に実現できる。しかし、この方法には問題もある。例えば電子掲示板システムのログデータにこの方法を適用することを考えてみよう。 電子掲示板に対するアクセスを全て同期化するということは、一度に一人のユーザしかログにアクセスできないということである。なんらかの理由(サーバ・クライアント間の回線速度やクライアントの処理速度の低下など)でログの読み込みに時間がかかっているユーザが一人れば、サーバ側の計算機資源にいくら余裕があっても、その間は他の大勢のユーザは掲示板にアクセスできない。すなわち計算機資源の利用効率が著し

    Zephid
    Zephid 2009/07/23
    2ch(の実況板)はどうなってるんだろか。
  • 初心者がJavaを“超高速”で学ぶためのコツ:ITpro

    皆さんの中には,「いまどきJavaくらいできなきゃねぇ~」と言われてからもう何年も過ぎちゃった…なんて人も多いのではないでしょうか。いつ何時「新しいプロジェクトJavaでいくから」なんて上司に言われたりしないか,内心ドキドキしてる方もいらっしゃるでしょう。私が受け持つJavaの授業でも,受講生の方からそういった悩みをよく聞きます。 しかしよく聞いてみると,なんだかとても効率の悪い勉強をしているなあと驚くことがあります。なぜなら多くの方が「Javaの入門書で勉強しているのにJavaのプログラムを作れるようにならない」と言われるからです。COBOLやC言語のプログラミング経験があるにもかかわらずです。 なぜJavaの学習がなかなか進まないのでしょうか。残念ながら「Javaのスキルが上がらない」という方の多くは,「データとアルゴリズム」「Javaの文法」「オブジェクト指向」の三つをきちんと学べ

    初心者がJavaを“超高速”で学ぶためのコツ:ITpro
    Zephid
    Zephid 2009/07/17
    これは初心者は読んではいけない。
  • Inversion of Control コンテナと Dependency Injection パターン

    以下の文章は、Martin Fowler の「Inversion of Control Containers and the Dependency Injection pattern」を、かくたにが翻訳したものです。原著者の許可を得て翻訳・公開しています。 翻訳にあたっては、kdmsnr さんにご協力をいただきました。ありがとうございます。公開後の改訂履歴を記事の最後に記述しています。 Java コミュニティでは軽量コンテナが花盛りである。 軽量コンテナは、異なるプロジェクトのコンポーネントをひとまとまりのアプリケーションとして組み立てることを支援する。 このようなコンテナの根底には、コンポーネントの結び付け方についての共通したパターンがある。 そのパターンのコンセプトは「Inversion of Control(制御の反転)」と、まことに包括的な名前で呼ばれている。 記事では、このパタ

    Zephid
    Zephid 2009/07/16
    なかなか寝付けない夜もこれを読み始めれば一発。
  • 矢沢久雄の早わかりGoFデザインパターン(1) | 日経 xTECH(クロステック)

    今回は、パターンを1つだけ紹介します。「Mediatorパターン」です。GoFでは、それぞれのパターンの「目的]「背景」「効果」などが明示されています。私も、ちょっと真似をしてみましょう。複数のオブジェクトを組み合わせてプログラムの機能を実現するという目的において、オブジェクト間の関連がゴチャゴチャになってしまうという背景(問題)があり、Mediatorパターンの採用によって関連をキレイに整理できるという効果があります。説明だけでは、何のことだかわからないと思いますので、具体例をお見せしましょう。 図1[拡大表示](1)をご覧ください。これは、UML(Unified Modeling Language、ユーエムエル)と呼ばれる表記法で記述されたプログラムの設計図です。UMLでは、四角形の中に下線付きで名前を書いてオブジェクトを表し、関連のあるオブジェクトを矢印で結んで示します。ここで関連

    矢沢久雄の早わかりGoFデザインパターン(1) | 日経 xTECH(クロステック)
  • デザインパターン[モデリング] -TECHSCORE-

    オブジェクト指向プログラミングにおいてデザインパターンを利用することは、開発者に様々なメリットを与えてくれます。 ここでは、「デザインパターンとは何か」というようなデザインパターンの基事項と、GoFの23個のデザインパターンをJavaを利用してわかりやすく解説します。 デザインパターン INDEX

    Zephid
    Zephid 2009/06/10
    オンラインヘルプ/ここ昔結城さんの本を読みながら見てたとこだ・・・UMLが出た辺りから頭に入らなくなってくるのは今も昔も同じ。パターンをわかっててもわかりづらい。
  • Java SE コアAPI 使用コード例一覧 - @IT

    IT編集部 2009/3/24 最終更新: 2012/04/11 17:57 このページは、Java開発者/プログラマのための、Java SE(旧、J2SE)のコアAPIの使用コード例の記事へのリンク集です。パッケージごとに表でまとめてあります。メソッドやコンストラクタ、例外などAPIの使い方の参考にしてください。パッケージやクラスの並び順は、標準のJavadoc(「Java Platform, Standard Edition API 仕様」)と同様にしています。 すべてのクラス java awt(Abstract Window Toolkit) event image io(In/Out) lang(LANGuage) reflect math(MATHmatics) net nio(New In/Out) charset(CHARacter SET) rmi(Remote Meth