javaでフィールド領域で処理を実装する方法ってありますか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
java大好き

javaでフィールド領域で処理を実装する方法ってありますか?

#1

投稿記事 by java大好き » 1年前

static初期化子とかじゃなくて、クラスのフィールド領域で例えばx[0]=1;みたいな代入処理を行うことです。
そんなコードを見つけてしまったもんで疑問に思いました。

YuO
記事: 909
登録日時: 7年前
住所: 東京都世田谷区

Re: javaでフィールド領域で処理を実装する方法ってありますか?

#2

投稿記事 by YuO » 1年前

フィールド領域とは何でしょうか。
Java言語仕様を参照してみましたが,それらしいものは無いようです。

Math

Re: javaでフィールド領域で処理を実装する方法ってありますか?

#3

投稿記事 by Math » 1年前

こちらの方が普通でしょうね。
画像

コード:

package java1;

class p
{	//フィールド領域   "産医師異国に向こう産後厄なく産”
	public static final double My_PI=3.141592653589793;
	//自然対数の底 e        "鮒一鉢二鉢一鉢二鉢"
	public static final double My_E=2.718281828;
	
	static  double[] ax={123.45,789.12};
	//メソッド領域
	static void x0()
	{
		System.out.println(ax[0]);
	}
	static void x1()
	{
		System.out.println(ax[1]);
	}
 }

public class javap1 {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		p.x0();
		p.x1();
		System.out.println(p.My_E);
		System.out.println(Math.sin(p.My_PI/4));
	}	
}
[/size]

keito940
記事: 105
登録日時: 1年前

Re: javaでフィールド領域で処理を実装する方法ってありますか?

#4

投稿記事 by keito940 » 1年前

少数の覚え方までコメントに書かれてるΣ(゚Д゚)

Math

Re: javaでフィールド領域で処理を実装する方法ってありますか?

#5

投稿記事 by Math » 1年前

C#に変換して見ました。(Visual Studio不要。Windows10のみの機能でOK。cs.batをWクリックするだけです。
cs.bat

コード:

C:\windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe ^
cs1.cs
cs1.exe
pause
cs1.cs

コード:

using System;
namespace java1
{
    class p
    {
        public static double My_PI=3.141592653589793;
        public static double My_E=2.718281828;
        static  double[] ax={123.45,789.12};
        //メソッド領域	
        public static void x0()
        {
                System.Console.WriteLine(ax[0].ToString());
        }
        public static void x1()
        {
                System.Console.WriteLine(ax[1].ToString());
        }
    }
    static class javap1 
    {
        static void Main() 
        {
            // TODO
            p.x0();
            p.x1();
            System.Console.WriteLine(p.My_E.ToString());
            System.Console.WriteLine(System.Math.Sin(p.My_PI/4).ToString());
        }	
    }			
}
実行結果

コード:

D:\z\3g\11\cs>C:\windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe cs1.cs
Microsoft (R) Visual C# Compiler version 4.6.1586.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240


D:\z\3g\11\cs>cs1.exe
123.45
789.12
2.718281828
0.707106781186547

D:\z\3g\11\cs>pause
続行するには何かキーを押してください . . .
[/size]


Math

Re: javaでフィールド領域で処理を実装する方法ってありますか?

#7

投稿記事 by Math » 1年前

Javaのグローバルな関数はクラス名でアクセス出来newしないでつかえます。
---
例えば
public final class Math extends Object

[Math クラスは、指数関数、対数関数、平方根、および三角関数といった基本的な数値処理を実行するためのメソッドを含んでいます。 ]
その実装は
〇[フィールド領域]
E
public static final double E
自然対数の底 e にもっとも近い double 値です。

PI
public static final double PI
円周とその直径の比 pi にもっとも近い double 値です。

〇[メソッド領域]
sin
public static double sin(double a)
指定された角度の正弦 (サイン) を返します。

cos
public static double cos(double a)
指定された角度の余弦 (コサイン) を返します。

tan
public static double tan(double a)
指定された角度の正接 (タンジェント) を返します。

asin
public static double asin(double a)
指定された値の逆正弦 (アークサイン) を返します。

.....
となっていて”static"なのです。一番多い普通の実装法です。カプセル化しなくてよいなら”大変簡単...”ですよ。全部グローバルで(昔の)BASIC風にすれば小学生にもつかえるでしょう。
(先日”12歳からはじめるHTML5とCSS3 著者名 TENTO/著 という本を予約してきました。小学校でもプログラムを教えるらしいですね!)

YuO
記事: 909
登録日時: 7年前
住所: 東京都世田谷区

Re: javaでフィールド領域で処理を実装する方法ってありますか?

#8

投稿記事 by YuO » 1年前

Math さんが書きました:

コード:

	//メソッド領域
仕様書上存在しないと思われるフィールド領域という言葉を使っておられる上,メソッド領域なる言葉も仕様書上該当しそうな言葉を見付けられないのですが,どこに書いてあるのでしょうか。
Mathさんの個人の意見はいりません。docs.oracle.comで提供されているJava Specificationの,HTMLの該当箇所のFragment付きのURIを提供してください。

なお,フィールド領域という言葉に私がこだわる理由は,単純に,大元の質問に書かれているような,式文をブロックの外に書く方法が存在しないものの,
フィールド領域という言葉が何を指すのかがわかれば,別の理由で書かれているようなことができるかもしれない,という理由からです。

かずま

Re: javaでフィールド領域で処理を実装する方法ってありますか?

#9

投稿記事 by かずま » 1年前

java大好き さんが書きました:static初期化子とかじゃなくて、クラスのフィールド領域で例えばx[0]=1;みたいな代入処理を行うことです。
本当に x[0] = 1; ですか?
{ x[0] = 1; } ではありませんか?
それなら、インスタンス初期化子です。

コード:

class Hoge {
    int x[] = new int[3];
    { x[0] = 1; }
}

class Main {
    public static void main(String[] args) {
        Hoge h = new Hoge();
        System.out.println(h.x[0]);
    }
}
java大好き さんが書きました:そんなコードを見つけてしまったもんで疑問に思いました。
コードをコピペしてください。

返信

“C言語何でも質問掲示板” へ戻る