char型は文字コードを保持する型とjavaの解説書に書いてありました。
そして、文字コードは10進数でなく16進数で表すと書いてありました。

でもchar型の変数には10進数も代入できます。これはコンピューターが10進数を16進数に変換しているからですか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

そのとおりです

    • good
    • 0
この回答へのお礼

ありがとうございます^^

お礼日時:2011/04/08 03:51

> 文字コードは10進数でなく16進数で表す



これがそもそも誤解される表現だと。
たしかに、16進数がよく使われますが、別にそうでなければならない、という規則があるわけではないです。

javaのchar型は数値です。「10進を16進に変換」というより、「同じ値を、10進と16進のどちらで表記しているか」です。
12個入りの箱を
アラビア数字で12個と表現するか、漢数字で十二個と表現するか、1ダースと表現するか
といった程度の違いです。どの場合でも箱の中身は同じです。


「変換」するってことなら、内部は二進数です。16進数と相性はいいですが、16進数ではありません。

この回答への補足

ご解答ありがとうございます!
変換という観点から考えると、char型に10進数を入力すると、10進数→16進数→2進数って感じで変換されていくのでしょうか?

補足日時:2011/04/08 03:51
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q数値に E でてくるのは。

Microsoft Excel や MATLABを使って数値計算をしているのですが、数値が非常に小さくなる時に、Eの入った形で表示されるのですが、これは大体いくつくらいを意味しているのでしょうか。
下にExcel計算の結果を載せておきます。よろしくお願いします。

.......
........
0.017946166
0.006095256
0.001997971
0.000645368
0.000207253
6.64089E-05
2.12612E-05
6.80477E-06
2.17766E-06
6.96868E-07
2.23E-07
......
...

Aベストアンサー

 E以下の数値は10の指数部を表します。

http://splab.spo.fukuoka-u.ac.jp/exlfaq/

 つまり、

 E-05=10^(-5)=0.00001
 E-06=10^(-6)=0.000001
 ・・・

と云うことです。
 6.64089E-05 の場合は、

 6.64089×0.0001=0.0000664089

となります。

Qchar型からアスキーコードへの変換

Javaでchar型配列に入っている文字をアスキーコードに変換する方法をご教授ください。

Aベストアンサー

char型は内部的には「UTF-16」でエンコーディングされているので、
キャストしただけでは、アスキーコードには変換できません。
(できることはできるが、他国後との対応を考えるとbyte配列に直しにくい。)

簡単にやるなら。


// char型配列の生成
char[] charArray = {'a', 'b', 'c'};

// byte型配列
byte[] asciiArray;

// 文字列クラスの生成(getBytesメソッドを使うため)
String string = new String(charArray);

// 文字コード変換 (・∀・)σ GOGO!
asciiArray = string.getBytes("Shift_JIS");


とかでいいんじゃないでしょうか?
Shift_JISと書いた箇所に好きなエンコーディング名を入れてください。

Q大きすぎる数値になるとE+になってしまいます…。

プログラミング上、どうしても馬鹿でかい数値を扱うことがあり、どうしても正規な数値ではなくE+といった形になってしまいます。
何か対処法はないでしょうか?

Aベストアンサー

がると申します。
「馬鹿でかい数値」のサイズにもよるのですが、ある程度以上(signed long値を超えるような数値。具体的には2147483647を超えるような値)の場合には注意を払う必要があります。
こういった数値を扱う場合、PHPですと、GMP関数やBCMath任意精度数学関数といったものを用いる必要があります。

Qjavaについて、char型に関する質問

私プログラミングまったくの初心者であることを最初に断っておきます。
よって、なるべく噛み砕いた解説をお願いします。


javaの参考書で、「char型は文字1つ分の情報にあたります」 と書いてありました。
これはどういうことでしょうか?
char型で宣言された変数は文字1つ分の情報しか入れられないということでしょうか?

Aベストアンサー

まず、No.3の回答に誤りがあったことをお詫び申し上げます。

No.3では「char型は16bit固定とは限らない」という旨の回答を致しましたが、「1文字は16bit固定とは限らない」というのが正解です。

Javaのchar型は16bit固定であり、16bit分の情報しか入りません。

ただ、Unicodeの1文字を表すために、char型の配列を(Stringクラス等を使う場合は内部的に)使用することがあります。

参考URL:http://java.sun.com/developer/technicalArticles/Intl/Supplementary/index_ja.html

QE列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつく

E列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつくようにしたい。

エクセル2007です。
条件付き書式で、数値を入れたセル自体に色をつけることはできたのですが他の列を参照することができませんでした。

どうやって設定すればいいでしょうか。

Aベストアンサー

B1セルの条件付書式で、条件を
「数式が」「=ISBLANK(E1)=FALSE」
とすればよいです。

QjavaにおけるCSV出力時の文字コード改行コード

JavaでCSVを出力する処理を作りました。

下記コードだとUnix環境で文字コードSJISで改行コードLFで出力されますが、
Windows環境でもUnix環境でも一律、文字コードSJISで改行コードCRLFで出力されるようにしたいです。

何かいい方法はありませんでしょうか。

なお、printlnで出力している行が多い為、
bw,Print("日付" + 変数A + \r\n);
というふうに一行づつ変更するのは避けたいと思っております。


try{

PrintWriter bw = new PrintWriter(new BufferdWriter(new OutputStreamWriter(new FileOutputStream(/tmp/test.csv),"SJIS")));

bw.println("日付" + 変数A);
bw.println("氏名" + 変数B);




}catch(Exception e){
// ログに出力
}

Aベストアンサー

System.setProperty("line.separator", "\r\n"); とすればbw.println()での出力改行コードを強制的にCRLFにできると思います。
ただし、この方法は特定のbwオブジェクトだけではなくline.separatorプロパティを参照する全てのコードが影響を受けるので、副作用に注意が必要です。

Q長い数値を入力すると「1.23457E+17」と表示されてしまうのは?

長い数値で例えば「123456789123456789」を入力すると「1.23457E+17」とセル内には表示され、データとしては「123456789123456000」となり、入力したものとあきらかに異なっています。
これはどういうことなのでしょうか?
また、正しく「123456789123456789」と表示させるにはどうしたらいいのでしょうか?

よろしくお願いします。

Aベストアンサー

#2です。
「ただ、10のXX乗は別の箱に入っているので......
について、ご参考になるかわかりませんが書きます。
あなたは、対数をご存じですか ? その考え方を思い出して下さい。
a)5桁の電卓で99,999以上の数字を入れようとしても入りませんよね。
b)0.0001以下の数字でも同じように0となってしまいますね。
限られた桁数で、出来るだけ広い範囲の数値を表すためには実際の数値(0.0001)を、有効桁数内で表現できるように位取りをして(1)、実際の数値を、その値と10の指数乗(10の-4乗)の積で保存しています。
この指数乗の部分を別の箱と書きました。
計算機では、「浮動小数点表示」などと呼ばれているハズ。

Qjava.util.Date型をjava.sql.Date型に変換

java.util.Date型をjava.sql.Date型に変換ってできるのでしょうか?

Aベストアンサー

util.Date には、
1970 年 1 月 1 日グリニッジ標準時 00:00:00.000からの時間を
取得/設定する関数がありますよね?

sql.Dateは、util.Dateを継承しているので
同じ関数がありますよ。

キャストという手もありますけどね!
明示的には上の方がわかりやすいかも。

#1の方の言ってる通りなのでとりあえずヒントです。
いろいろ調べる力もプログラマには必要ですよ~!

Qdocomo/LGのL-03Eで電池残量を数値確認

こんばんは

L-03Eを購入して使い始めましたが困ったことがあります。
電池残量を 90% などのような数値で確認する方法がわかりません。

乾電池をもしたようなおなじみのアイコンで大まかな残量は確認できますが、具体的な数値での確認をしたいのです。Connection Managerにログインしても同様の項目はありませんでした。以前に使っていたバッファローのルーターはログインすると数値で確認できたのですが。

取説もさらってみましたが該当する項目は見つけられませんでした。
ご存じの方がいらっしゃったら教えてください。

Aベストアンサー

どうやら、説明書を見ても記載がありませんから、その表示の設定はないと思われます。

Q文字コードについて(どのファイルをどの文字コードにしてWeb開発を進めていくべきか)

【疑問の背景】
文字コードについて(どのファイルをどの文字コードにしてWeb開発を進めていくべきか)

  国際標準で使われているUTF-8で統一しておけば問題はないだろうと思って開発を進めていると・・・

  UTF-8は「日本語が2~4バイト」で扱われるという、バイトの扱いが厄介であるため、
  できればJavaでのUTF-8で開発は避けたい、だから「Shift-JIS」にしておきたいという話があがり、
  各々のファイルにどの文字コードを設定すれば良いのかがわからなくなっている状態です。
 
 いくつかの疑問がでていまして
 判る範囲で構いませんので文字コード設定の判断についてのアドバイスいただけませんでしょうか?

【現在の開発文字コード】

HTMLファイル: UTF-8
JSPファイル: UTF-8

Javaファイル(servlet): UTF-8
Javaファイル(Bean): UTF-8
Javaファイル(JSPから出来たサーブレット): UTF-8

データベース: UTF-8

【設定したい今後の予定文字コード】

HTMLファイル: UTF-8
JSPファイル: UTF-8

Javaファイル(servlet): Shift-JIS
Javaファイル(Bean): Shift-JIS
Javaファイル(JSPから出来たサーブレット): Shift-JIS

データベース: UTF-8

【疑問1】
javaファイル(servlet,Bean)をどのコードにすべきかについて

 全てS-JISにした方がいいのか、UTF-8にした方がいいのかどうあるべきなのでしょうか?
 (UTF-8 で 「日本語が2~4バイト」として扱われると、どういった弊害が発生するのでしょうか?)

【疑問2】
javaファイルをS-JISに変える方法について

 今はサクラエディターというツールで
 名前を付けて保存 → 文字コードセット「Shift-JIS」 → 保存 → ファイル名の文字コードセットの変更完了
 
 今はエクスプローラーから直接フォルダの中にあるファイルを触っている状況なのですが、
 eclipseから「ファイルの文字コードセットを変更する方法」はありますでしょうか?


【疑問3】
「Shift-JIS」に設定して開発していく必要性について

 既存で「utf-8」で設定されているjavaファイルを、「Shift-JIS」に設定して開発していく必要性はあるのでしょうか?
(all in one eclipse 3.4 を入れたとき、デフォルトで「utf-8」でjavaファイルが作られるつくりになっているみたいなのですが・・・)
 

【疑問4】
javaファイル作成時、「Shift-JIS」の形式でファイルを生成する方法について
 
  現在、javaファイルを作成する場合「utf-8」のコードでjavaファイルが生成されるようになっています。
  
  【自作で作成したjavaファイルの場合】
   「サクラエディターを使用して、文字コードセットをShift-JISに変更すれば、ずっとShift-JISのファイルの状態」にすることができました。
  
  しかしここで問題が出たのですが
  
  【JSPファイルから自動生成されたjavaファイル(servlet)の場合】
   「サクラエディターを使って、Shift-JISに変更した後に、JSPファイルを編集すると、また“utf-8に戻ってしまう” 状態」です。
   現状としては「JavaファイルはShift-JISに統一して欲しい」という要望なので、
   JSPから自動生成されたjavaファイルが "utf-8" になってしまいます。
  
  JSPから自動生成されたjavaファイルを
   "常にShift-JISに設定する" 方法はありますでしょうか?
 
 
【環境】
 OS
  ・WindowsXP Pro
 
 java開発環境
  ・all in one eclipse(3.4)
  ・TomCat(6.0)
  ・Java JRE(1.6)
  ・MySQL(5.0)

【疑問の背景】
文字コードについて(どのファイルをどの文字コードにしてWeb開発を進めていくべきか)

  国際標準で使われているUTF-8で統一しておけば問題はないだろうと思って開発を進めていると・・・

  UTF-8は「日本語が2~4バイト」で扱われるという、バイトの扱いが厄介であるため、
  できればJavaでのUTF-8で開発は避けたい、だから「Shift-JIS」にしておきたいという話があがり、
  各々のファイルにどの文字コードを設定すれば良いのかがわからなくなっている状態です。
 
 いく...続きを読む

Aベストアンサー

えっと、まず、文字集合とエンコード方式 (もしくはエンコーディング方式) の違いは OK ですか?
Windows では UTF-16 のことを指して Unicode と表現することもあるのですが、Unicode は文字集合で、UTF-16 はエンコード方式です。
Unicode という文字集合を扱うために、UTF-8 や UTF-16 といったエンコード方式があります。
Shift_JIS も同様にエンコード方式で、これは JIS X 0208 という文字集合に対応するエンコード方式のひとつです。
で、文字コードというと文字集合とエンコード方式のどちらを言っているのか人によって違ったりするので、あまり使いたくない言葉です。
# 質問者さんは「文字コードのエンコーディング方式」のように使っているところを見ると、文字コードを文字集合の意味で使っているようですね

Shift-JIS (正しくは Shift_JIS) や UTF-8 と言っていることから、エンコード方式の話がしたい、という前提で話を進めます。


まず、どの部分のエンコード方式を扱っているかが問題です。

1) .java や .jsp といったソースファイルの話
2) プログラミング言語の内部で扱われる文字列の話
3) Web ブラウザに対して送信する際の話

DB を無視すると、とりあえずこの 3 つが考えられます。
まず 1) ですが、これを UTF-8 で書くか、Shift_JIS で書くか、それとも他のものを使うかは、正直好きにすればいいと思います。
ただし、HTML ファイルや CSS ファイルといったものに関しては、おそらく直接 Web ブラウザに対して送信することになるため、3) と合わせておきます。
次に 2) ですが、これは変更することは出来ません。Java の場合必ず内部では UTF-16 で扱うようになっています。
もしこれをどうしても他のエンコード方式が使いたいとなると、文字列はあきらめてバイト列を文字列見に立てて使用することになるでしょうけど、はっきり言って労力に対する見返りが小さすぎます。
もっと言うと、非現実的です。
ただ、Java の UTF-16 対応は中途半端で、サロゲートペアの扱いには注意が必要となります。
例えば、人間から見ると 1 文字なのに、length() が 2 を返してきたりするということです。
もしかすると、このあたりのことを指して、「バイトの扱いが厄介」と言っているのかもしれません。
もしそうなら、1)、つまりファイルのエンコード方式を変えたところで全く意味はありません。
codepointLength とか codepointAtCodePointIndex といった、サロゲートペアでもうまく扱えるメソッドを使いましょう。
最後に 3) ですが、これは正しく指定すればエンコード方式がなんであろうが問題ないはずです。


で、次に各エンコード方式の問題点を挙げます。

Shift_JIS : Windows では Windows-31J(CP932) という拡張が使用されており、Shift_JIS との互換性が完全ではない。そのため下手すると文字化けを起こす
UTF-16 : 可変長のエンコード方式にも関わらす固定長のエンコード方式として扱われている場合が多い。また、Unicode の全ての文字を表すことが出来ない。
UTF-8 : Unicode の全ての文字を表すことができるが、日本語が多いと他のエンコード方式に比べてより多くの容量が必要

このように、どのエンコード方式を使おうが何かしらの問題はあります。
その上で、問題点を認識していない状況で盲目的に「Shift_JIS にしよう!」というのは、後から痛い目を見る確率が高いと言っていいでしょう。
まずは問題点を認識しましょう。話はそれからです。
# あと、ここに書いた情報、鵜呑みにしないでくださいね
# 自信なしがあったら迷わずそれにチェックを入れたいくらいです

えっと、まず、文字集合とエンコード方式 (もしくはエンコーディング方式) の違いは OK ですか?
Windows では UTF-16 のことを指して Unicode と表現することもあるのですが、Unicode は文字集合で、UTF-16 はエンコード方式です。
Unicode という文字集合を扱うために、UTF-8 や UTF-16 といったエンコード方式があります。
Shift_JIS も同様にエンコード方式で、これは JIS X 0208 という文字集合に対応するエンコード方式のひとつです。
で、文字コードというと文字集合とエンコード方式のどちらを言って...続きを読む


人気Q&Aランキング