合計 昨日 今日

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

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: java大好き
[URL]
Date: 2017年3月11日(土) 12:24
No: 1
(OFFLINE)

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

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

Name: YuO
[URL]
ハッカー(150,404 ポイント)
Date: 2017年3月11日(土) 13:11
No: 2
(OFFLINE)

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

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

Name: Math
[URL]
Date: 2017年3月11日(土) 15:24
No: 3
(OFFLINE)

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

こちらの方が普通でしょうね。
画像
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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));
    }  
}


Name: keito940
[URL]
熟練のプログラマー(59,919 ポイント)
Date: 2017年3月11日(土) 18:10
No: 4
(OFFLINE)

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

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

Name: Math
[URL]
Date: 2017年3月11日(土) 22:20
No: 5
(OFFLINE)

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

C#に変換して見ました。(Visual Studio不要。Windows10のみの機能でOK。cs.batをWクリックするだけです。
cs.bat
コード[C++]: 全て選択
1
2
3
4
C:\windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe ^
cs1.cs
cs1.exe
pause

cs1.cs
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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());
        }  
    }          
}

実行結果
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 <!-- m --><a class=\"postlink\" href=\"http://go.microsoft.com/fwlink/?LinkID=533240\">http://go.microsoft.com/fwlink/?LinkID=533240</a><!-- m -->
 
 
D:\z\3g\11\cs>cs1.exe
123.45
789.12
2.718281828
0.707106781186547
 
D:\z\3g\11\cs>pause
続行するには何かキーを押してください . . .


Name: Math
[URL]
Date: 2017年3月11日(土) 22:39
No: 6
(OFFLINE)

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

static class javap1は
コード[C++]: 全て選択
1
2
3
4
    class javap1 
    {
        static void Main()
        {

でもOK!。https://msdn.microsoft.com/ja-jp/library/79b3xss3.aspx

Name: Math
[URL]
Date: 2017年3月12日(日) 00:09
No: 7
(OFFLINE)

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

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/著 という本を予約してきました。小学校でもプログラムを教えるらしいですね!)

Name: YuO
[URL]
ハッカー(150,404 ポイント)
Date: 2017年3月12日(日) 13:40
No: 8
(OFFLINE)

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

Math さんが書きました:
コード[C++]: 全て選択
1
    //メソッド領域

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

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

Name: かずま
[URL]
Date: 2017年3月14日(火) 15:08
No: 9
(OFFLINE)

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

java大好き さんが書きました:static初期化子とかじゃなくて、クラスのフィールド領域で例えばx[0]=1;みたいな代入処理を行うことです。

本当に x[0] = 1; ですか?
{ x[0] = 1; } ではありませんか?
それなら、インスタンス初期化子です。
コード[Java]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
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大好き さんが書きました:そんなコードを見つけてしまったもんで疑問に思いました。

コードをコピペしてください。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[19人]