駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

Srtingメソッドの引数

Stringメソッドに引数を渡します。

thing.method();
thing.method(arg); argの部分が引数

前回は括弧 () の中身がなかったと思います。

今回は括弧 ()の中に引数を渡すことができることを紹介します。

引数を渡すことで動作するメソッドや引数を渡すことで動きが変わるメソッドもあります。

引数・・・引数とは、関数やメソッドを呼び出す際に渡す値のことです。プログラム言語では、この「渡された値に対して処理を行い、結果を返す」ということを行っています。

 

それでは例を挙げてみます

・indexOf

引数で渡した文字列が最初に現れるインデックス(0〜から始まるやつ)を返してくれるメソッドです。

let tvShow = 'catdog';

tvShow.indexOf('cat'); //0
tvShow.indexOf('dog'); //3
tvShow.indexOf('x'); //-1

catという文字列が最初に出てくるのはインデックス0の時なので、出力結果は0になります。

該当しない文字列が入った場合は、返り値として数値の-1が返されます。

・slice

文字列や配列などからデータの一部分だけ取り出せるメソッドです。

※構文※
let str = 文字列

str.slice(開始位置, 終了位置(省略可能));

終了位置のインデックスは取り出し終える前の0から始まるインデックスであり、このインデックスにある文字は含まれません。

具体的に・・・

let str = 'hello happy world!!';

str.slice(6); // happy world!!
str.slice(6,11); // happy
str.slice(-5); // rld!!

str.slice(6,11); に関しては切り抜く文字は6文字目〜10文字目ということになるので覚えておきましょう。

負の数も取ることができます、その場合は後ろから数えたものが結果として出力されます。

・replace

文字列の一部または全てを新しい文字列に置き換えるメソッドです。

let str = 'hello happy world!!';

str.replace('happy', 'good'); // 'hello good world!!'
str.replace('h', 'H'); // 'Hello happy world!!'

上記のように置き換えることができます。

あくまで最初に見つけた文字になるので、「 h 」の数が多くても置き換わる文字は

「 hello 」の「 H 」となります。

下記に参考URLも貼りましたので見てみてください。

 

developer.mozilla.org

developer.mozilla.org

 

Stringのメソッド

・Stringメソッド

全てのStringには最初から組み込まれているStringを操作できるアクションがあります。

→メソッドと呼びます。

メソッドを使うことで文字列に便利な操作を実行することができます。

例えば・・・

・文字列内を検索できる

・文字列内の文字を置換ができる

・大文字小文字を変換できる

メソッドの書き方

thing.method()

thingのところは変数や文字列が入り、後半部分がメソッド名と()になります。

メソッドの場合は実行する必要があるため、実行すること伝えるために()を書かなければいけません。

ここで例を挙げてみます。

文字を大文字にする、toUpperCaseというメソッドを使ってみます。

2個目の hello.toUpperCase だと実行されてないのがわかります。

3個目の hello.toUpperCase() だと実行され、小文字から大文字へと変換されているのがわかります。

しかし、4個目で表している通り、変数 hello の中身は変わっていません。

あくまで hello の中身を変換し、新しいStringを返してくれています。

 

文字列の両端の空白を削除してくれるtrimというメソッドも紹介します。

例えばユーザーの入力したものが意図せず空白が含まれている時にこのメソッドを使うことでキレイなStringに変換できます。

極端ですが、上記のように両端に空白があっても、trimを使うことで、

キレイなStringに変換されます。

あくまで両端だけなので、間にある空白は排除されません。

 

メソッドは連続して書くこともできます。

上記のようにメソッドの後に、さらに .メソッドを加えることで空白を排除し、かつ大文字にすることができます。(メソッドの順番はどちらでもOKです。)

→メソッドチェインと呼びます。

よく使うことがあるので覚えておきましょう。

 

MDNにも様々なメソッドが記載されれいるので確認してみてください。

developer.mozilla.org

JavaScriptのString・インデックス

・Stringというプリミティブ型

文字の並びを表すデータ型

テキストを表現し、シングルクォート( ' )やダブルクォート( "" )で囲う必要がある。

いくつか例を書いてみます。

let username = 'suzuki'; //シングルクォートOK
let msg = "Please do not feed the chimps!";
let animal = "dog"; //ダブルクォートOK
let bad = "this is wrong';

シングルクォートやダブルクォートどちらを使っても大丈夫だが、統一しておく必要があります。

最後の文はエラーになるため、注意です。

let fullname = '山田 太郎@@@$&';
let num = "55";
let int = 55;

上記のように、漢字や@なども入れることができます。

数字を囲うこともできますが、Stringの55とNumberの55は別物になります。

 

シングルクォートとダブルクォートの両方を使用する場合もあります。

"I'm happy"
'I said, "Hello!"'

ほとんど英語で記述するときに使いますが、上記のように記述できます。

 

・インデックス

Stringはインデックスされています。

下記のように0から順番に数字が割り振られています。

その数字を使ってStringの文字にアクセスできます。

CHICKEN
0123456

例を書いてみます。

上記のように[ ]に対応する数字を入れることで、その文字にアクセスできます。

※空白も一つとしてカウントします。

 

・lengthや文字の連結

簡単に紹介します。

変数の後ろに.lengthを付け加えると、長さを教えてくれます。

※ここでは文字数

主に配列とかで使用するのでここでは割愛します。

また、String同士を足すこともできます。文字の連結ともいいます。

 

Stringやインデックスについてまとめてみました。

Booleanと変数の命名規則

・Booleanというプリミティブ型

シンプルで「true」か「false」しかとりません。

let isLoggedIn = true;
let gameOver = false;
const isWaterWet = true;

上記のように記述します。

ゲームで「ログインしている」や、勝ち負けなどの勝敗などを表す際によく使われることが多いです。

JavaScriptでは「true」か「false」は小文字での表記

大文字だとエラーになるが他の言語では問題ない場合もあります。

また上記のように変数のデータ型を変えることができます。

使う場面は少ないが、覚えておくと便利。

 

・変数の命名規則

変数名の名前(識別子)にはルールがあります。

・半角のアルファベット、_(アンダースコア)、$(ダラー)、数字を組み合わせた名前にすること

・変数名は数字から開始できない

予約語と被る名前は利用できない

OKパターン

let $; // OK: $が利用できる
let _name; // OK: _が利用できる
let year; // OK: 小文字のアルファベットが利用できる
let TITLE; // OK: 大文字のアルファベットが利用できる
let jp2023; // OK: 数字は先頭以外なら利用できる
let 日本語の変数名; // OK: 一部の漢字や日本語も利用できる

NGパターン

let 1st; // NG: 数字から始まっている
let 1000; // NG: 数字のみで構成されている

 

〜変数名の書き方おすすめ〜

let currentyear = 2023
let current_year = 2023 // スネークケース
let currentYear = 2023 //キャメルケース
let CurrentYear = 2023 //パスカルケース

キャメルケースが一番良く使われます。

let currentYear = 2023 //キャメルケース
 YearのYが大文字になっており、これがラクダのこぶみたいに見えるためそのような名前になっています。
キャメル = ラク

※絶対ではないので注意してください。

他の言語によっては、スネークケースやパスカルケースも使います。

わかりやすい変数名を使用することを心がけましょう。

let y = 2000;

このように省略して記述しても大丈夫ですが、今年なのか来年なのか、またまた昨年なのか一目ではわからない。

その点にも注意にしていくことが大事!!

 

簡単にまとめてみました。

JavaScriptの変数とlet

Javaの変数でも記載した通りですが、JavaScriptでも変数を使用します。

ここでは、

「変数は値につけておくラベルのようなもの」と記述しておきます。

変数に入れておくことで

・後から参照できる

・何かしら処理をするために使うことができる

・後から違う値にも変更できる

※そもそもJavaJavaScriptでは文法が違うので、変数の扱いも違ってきます。

Javaではデータ型というものを最初に固定で決める形式(静的型付)

JavaScriptではデータ型を適宜変更できる形式(動的型付)

Javaは、コンパイル(コンピュータが処理できる形に翻訳)が必要ですが、JavaScriptコンパイルが不要

 

それではJavaScriptの変数の基本構文を見てみましょう。

let name = value;

具体的には

let year = 2000;

yearという変数を作りその中に、2000という値を入れる

上記のように参照も可能。

また複数宣言もできる。

変数の更新も下記のように行える

最後にlet以外の変数について

const var

const ・・・letと違い、宣言できるが後から変更ができない

var・・・letやconstの登場前はvarが使われていたが、letやconstの登場により使われなくなった

varはletと同じように使用できる。単に使われなくなっただけ。

 

最後にconstで宣言後、値を変更するとエラーになるところだけ見ておきます。

 

以上、JavaScriptの変数でした。

JavaScriptのNumber

本日から最近学び始めたJavaScriptについても書いていきます。

基礎的なことから徐々に行なっていきます。

 

・Numberというプリミティブ型

数字の保持や計算などでよく使います。

他言語では、整数や浮動小数点数、いろいろなものに分かれていますが、

JSでは数値型はNumber、一つしかありません。

正の数、負の数、整数、浮動小数点数全てNumberとなります。

 

演算をやってみましょう。

ブラウザで右クリック

検証→コンソールがあるので一緒に行ってみてください。

下記のように演算ができます。

// 加算
50 + 5 // 55
// 減算
90 - 3 // 87
// 乗算
20 * 4 // 80
// 除算
100 / 25 // 4
// 剰余演算
9 % 2 // 1
// べき演算
2 ** 3 // 8

下の演算2種について簡単に説明します。

・剰余演算・・・結果は余った数字が結果になります。

9の中に2は4回入るので、9-8をして余りが1となります。

→奇数や偶数を判断するときによく使う

・べき演算・・・「**」で何乗かを表す。

2の3乗なので、結果は8となります。

 

これとは別で「NaN」といものがあります。

Not a numberの略です。

非数・・・数字ではないのを表す値

0 / 0 // NaN
1 + NaN //NaN

これも頭の片隅に入れておいてください。

 

以上、Numberについてまとめてみました。

是非、計算も行ってみてください。

Javaのオブジェクト指向

あけましておめでとうございます。

今年もよろしくお願いします。

最近Java以外にもJavaScriptも勉強しているのでまた発信していければと思います。

 

本日はJavaオブジェクト指向について。

そもそもオブジェクト指向って・・・?

プログラムで利用される機能をオブジェクト(物)として捉えて、各オブジェクトを組み合わせることによりシステムを完成させる概念

紹介する用語をいきなり全て覚える必要はないので、基本を抑えた上で、徐々に各用語を理解していくことが大切。

 

オブジェクト指向の説明では欠かせない2つのキーワード〜

クラス

・・・実行用クラスと設計図クラスに分けられる。実行用クラスは習った通り、mainクラスである

インスタンス

・・・インスタンスはクラスを実体化させたものを指す。

現実でも設計図だけでは実際に利用出来ないように、プログラムでもインスタンス化してクラスに定義した機能を利用することになる

 

メリット

・開発効率アップ/保守性アップ/メモリ効率/システム化

などが挙げられる。

 

実際にサンプルを書いてみる

1:クラス定義

class Human {
String name;

void speak(String word) {
System.out.println(word);
}
}

2:インスタンス

public static void main(String args) {
Human pirate = new Human();
 //mainメソッド内で記述
}
}

インスタンス化するにはnew演算子を使用。

Humanクラスをnew演算子インスタンス化し、「pirate」という名前でインスタンスを作成

3:作成したインスタンスのフィールドを使用

使用する際は「インスタンス名.変数名」、メソッドは「インスタンス名.メソッド名」で利用することが可能。

4:サンプル実行してみる

public class test {

public static void main(String args) {
 //実行用クラス
Human pirate = new Human();
pirate.speak(pirate.name);
}
}

class Human {
//設計図クラス
String name;

void speak(String word) {
System.out.println(word);
}
}

最近ずっとワンピースにハマっているので、この名前使っちゃいました(笑)

 

出力結果

 

オブジェクト指向について簡単にまとめてみました。

まだ勉強中ではあるので、また増えた知識は追加でゆっくり書いていきます。