���\���l������Java�̃v���O���~���O

�@�������ʂ�񋟂���v���O�����ł����Ă��A�v���O���~���O��̎������@�͈�ʂ�ł͂���܂���B
�v���O���}�́A�����̒�����œK�ȕ��@��I�����ׂ��l�����Ȃ���΂Ȃ�܂���B
���̂Ƃ��̂ЂƂ‚̔��f��Ɂu���\�i�������x�C������j�v������܂��B
�����ł́AJava�̃v���O���~���O�ɂ����āu���\�v���ӎ������Ƃ��ɁA�����‚��̍l�����ׂ������ɂ‚��āA���ЁuJava�̓S���v����Q�l�ɂȂ�Ǝv�������̂��Љ�����Ǝv���܂��B


Contents

  1. �I�u�W�F�N�g�̍쐬�̃R�X�g
    1. �o���邾���p���̏��Ȃ��N���X���g���C���
    2. �I�u�W�F�N�g�������̏������y������
    3. �I�u�W�F�N�g�͕K�v�ȂƂ��ɍ쐬����
    4. ���̃I�u�W�F�N�g���ė��p�”\�ȏꍇ�͍ė��p����
  2. �ϐ��̏������\
    1. �p�ɂɃA�N�Z�X����ϐ��ɂ̓X�^�b�N�ϐ����g�p����
    2. �ϐ��͏o���邾���v���~�e�B�u�^���g��
    3. �C���X�^���X�ϐ��̖��ʂȏ������͂��Ȃ�
  3. Java�R���p�C���CJIT�ɂ��I�v�e�B�}�C�Y
    1. ���\�b�h�� static, final, private�^�ɂ��ăC�����C��������
    2. �萔��ϐ��Ŏw�肷��ꍇ�� final �w�肷��
  4. ���̑�
    1. ������̘A���� String ���� StringBuffer ���g��
    2. Vector �̌����� get���\�b�h ���g���� for ���[�v ������
    3. Vector �� ArrayList ���� �z�� ���g��
    4. �z��̃R�s�[�ɂ� System.arraycopy ���g��
    5. ���ʕ������͕ϐ��ɒu��������
    6. ���[�v��W�J����


  1. �I�u�W�F�N�g�̍쐬�̃R�X�g

    �@�I�u�W�F�N�g�i�C���X�^���X�j���쐬����ɂ͑傫�ȃR�X�g�i�������ԁC����������j��������܂��B
    �]���āA�I�u�W�F�N�g�̍쐬�͍ŏ����ɂƂǂ߂邱�Ƃ��v���O�����̐��\����ɑ傫����^���܂��B


    1. �o���邾���p���̏��Ȃ��N���X���g���C���

      �@�h���N���X�̃I�u�W�F�N�g���쐬����ꍇ�A���̏�ʃN���X�̃R���X�g���N�^���ŏ�ʃN���X�ł��� java.lang.Object �ɒB����܂ŏ��X�Ɍďo���܂��B
      �R���X�g���N�^���Ăяo�����ƁA���ꂼ��̃N���X�̃C���X�^���X�ϐ��̏��������s���A�����ăR���X�g���N�^�{�������s����܂��B
      �I�u�W�F�N�g���쐬����Ƃ��� java.lang.Object ���珇�ɍʼn��ʃN���X�܂ł��̏��������s����邱�ƂɂȂ�܂��B
      �]���āA�p���̑����N���X�����p���̏��Ȃ��N���X�̕����I�u�W�F�N�g�쐬�̃R�X�g�͏��Ȃ��čς݂܂��B


    2. �I�u�W�F�N�g�������̏������y������

      �@�O�q�̂悤�ɃI�u�W�F�N�g�̐����ɂ͑傫�ȃR�X�g��������܂��B
      �����ŁA

      • �R���X�g���N�^�̏�����K�v�ŏ����ɂ���B
      • ����������I�u�W�F�N�g��K�v�ŏ����ɂ���B
      • �C���X�^���X�ϐ���K�v�ŏ����ɂ���B
      • �C���X�^���X�ϐ��̖��ʂȏ����������Ȃ��B�i��q�j

      �ȂǍl�����āA�I�u�W�F�N�g�������̃R�X�g�������ł����������邱�Ƃ͐��\�̖ʂő�ϗL���ł��B

    3. �I�u�W�F�N�g�͕K�v�ȂƂ��ɍ쐬����

      �@C����ł̃v���O���~���O�o���̂���v���O���}�̏ꍇ�AC����̂Ƃ��̕ȂŁA���\�b�h�̐擪�ł��ׂĂ̕ϐ��̐錾������R�[�h�������Ă��܂����Ƃ�����܂��B
      ���ʓI�ɐ錾�����ϐ��̑S�Ă��g����̂ł���Ζ��͂���܂��񂪁A�����̗���ɂ���Ă͎g���Ȃ��ꍇ������̂ł���΁A����͖��ʂł��B
      �I�u�W�F�N�g�͕K�v�ƂȂ����Ƃ��ɍ쐬����悤�ɐS�����܂��傤�B
      ���x�������悤�ɁA�I�u�W�F�N�g�̐����ɂ͑傫�ȃR�X�g��������̂ł��B

      ��F�Q�‚̕������A�������������Ԃ����\�b�h

      public String concat(String str1, String str2) throws IllegalArgumentException
      {
      IllegalArgumentException ex = new IllegalArgumentException("Parameter Error !");
      String result = new String();
      if ( str1 != null && str2 != null ) {
      result = str1 + str2;
      } else {
      throw ex;
      }
      return result;
      }

      ���̗�̏ꍇ�A�p�����[�^���s���������ꍇ�� result �͎g�p���܂��񂵁A���펞�ɂ� ex �͕K�v����܂���B
      ���̃R�[�h�́A�ȉ��̂悤�ɂ���Ζ��ʂ͐����܂���B

      public String concat(String str1, String str2) throws IllegalArgumentException
      {
      if ( str1 != null && str2 != null ) {
      return new String(str1 + str2);
      } else {
      throw new IllegalArgumentException("Parameter Error !");
      }
      }


    4. ���̃I�u�W�F�N�g���ė��p�”\�ȏꍇ�͍ė��p����

      �@�I�u�W�F�N�g�����ɂ͑傫�ȃR�X�g��������܂��B�ė��p���”\�ȏꍇ�͍ė��p���ׂ��ł��B


  2. �ϐ��̏������\


    1. �p�ɂɃA�N�Z�X����ϐ��ɂ̓X�^�b�N�ϐ����g�p����

      �@���̃R�[�h�́A�X�^�b�N�ϐ��C�C���X�^���X�ϐ��C�X�^�e�B�b�N�ϐ��ɌJ��Ԃ��A�N�Z�X������̂ł��B

      class StackVars
      {
      private int instVar;
      private static int staticVar;

      // �X�^�b�N�ϐ��ւ̃A�N�Z�X
      public void stackAccess(int val)
      {
      int j = 0;
      for ( int i=0; i<val; i++ )
      j += 1;
      }

      // �C���X�^���X�ϐ��ւ̃A�N�Z�X
      public void instanceAccess(int val)
      {
      for ( int i=0; i<val; i++ )
      instVar += 1;
      }

      // �X�^�e�B�b�N�ϐ��ւ̃A�N�Z�X
      public void staticAccess(int val)
      {
      for ( int i=0; i<val; i++ )
      staticVar += 1;
      }
      }

      ��������s���Ă݂�ƁA�C���X�^���X�ϐ��̏ꍇ�ƃX�^�e�B�b�N�ϐ��̏ꍇ�͏������Ԃɍ��͂���܂��񂪁A�X�^�b�N�ϐ��̏ꍇ�͂R�`�T�{�����ł��B
      �]���āA��L�̃C���X�^���X�ϐ��C�X�^�e�B�b�N�ϐ��ɑ΂��鏈���́A�ȉ��̂悤�ɂ��������������Ԃ��Z���čς݂܂��B

      class StackVars
      {
      private int instVar;
      private static int staticVar;

      // �C���X�^���X�ϐ��ւ̃A�N�Z�X
      public void instanceAccess(int val)
      {
      int j = instVar;
      for ( int i=0; i<val; i++ )
      j += 1;
      instVar = j;
      }

      // �X�^�e�B�b�N�ϐ��ւ̃A�N�Z�X
      public void staticAccess(int val)
      {
      int j = staticVar;
      for ( int i=0; i<val; i++ )
      j += 1;
      staticVar = j;
      }
      }

    2. �ϐ��͏o���邾���v���~�e�B�u�^���g��

      �@�ϐ��ɂ́A�v���~�e�B�u�^�Ƃ���ɑ΂��郉�b�p�[�N���X�iint �ɑ΂��� Integer �Ȃǁj������܂��B
      �N���X���g�p����ƁA���̒l�ɃA�N�Z�X����Ƃ��ɃI�u�W�F�N�g����̂œ��R�x���Ȃ�܂��B

      ���̗�ł́A�v���~�e�B�u�^���g�������i�O�ҁj���R�O���قǍ����ł��B

      // �v���~�e�B�u�^���g��
      public int usePrimitive(int increment)
      {
      int i = 5;
      i = i + increment;
      return i;
      }

      // ���b�p�[�N���X���g��
      public int useObject(Integer increment)
      {
      int i = 5;
      i = i + increment.intValue();
      return i;
      }

      �܂��A�ȉ��̂悤�ɖ߂�l���I�u�W�F�N�g�ɂ����ꍇ�́A�O�q�̃I�u�W�F�N�g�����̃R�X�g������ɂ����邱�ƂɂȂ�܂��B

      // ���b�p�[�N���X���g��
      public Integer useObject(Integer increment)
      {
      int i = 5;
      i = i + increment.intValue();
      return new Integer(i);
      }

      �����Ȃ�ƃv���~�e�B�u�^�����g���Ă��Ă΂����悤�Ɏv���܂����A���b�p�[�N���X���g��Ȃ���΂Ȃ�Ȃ��ꍇ�����R����܂��B
      ���̂ЂƂ‚̗�ɃR���N�V�����N���X������܂��B
      �R���N�V�����N���X�́A�v���~�e�B�u�^�������܂���B
      �ȉ��̂悤�� Vector �Ƀv���~�e�B�u�^�̒l���i�[���邱�Ƃ͂ł��܂���B

      Vector v = new Vector();
      v.add(5);

      ���̏ꍇ�́A���̂悤�Ƀ��b�p�[�N���X�ɒu�������Ċi�[���邵������܂���B

      Vector v = new Vector();
      v.add(new Integer(5));

      �v���~�e�B�u�^�Ƃ���ɑ΂��郉�b�p�[�N���X�͈ȉ��̒ʂ�ł��B

      �v���~�e�B�u�^���b�p�[�N���X
      booleanBoolean
      charCharacter
      byteByte
      shortShort
      intInteger
      longLong
      floatFloat
      doubleDouble

    3. �C���X�^���X�ϐ��̖��ʂȏ������͂��Ȃ�

      �@Java�ł́A�I�u�W�F�N�g�������̃C���X�^���X�ϐ���static�ϐ��̏������i�f�t�H���g�l�j�͕ۏ؂���Ă��܂��B
      �����̕ϐ��Ƀf�t�H���g�l�Ɠ����l�𖾎��I�ɐݒ肷��̂́A�Q�x�l��ݒ肷�邱�ƂɂȂ薳�ʂł��B

      ���̃R�[�h�ł́A�I�u�W�F�N�g�������ɁA�C���X�^���X�ϐ� count, done, pt, vec �́A���ꂼ�� 0, false, null, null �ɏ���������܂��B
      �����āA���R�[�h�Ƃ� count �� done �ɂ͂�����x�����l��ݒ肷�邱�ƂɂȂ�܂��B

      class Foo
      {
      private int count;
      private boolean done;
      private Point pt;
      private Vector vec;

      public Foo()
      {
      count = 0;
      done = false;
      pt = new Point(0, 0);
      vec = new Vector(10);
      }
      }

      class Foo
      {
      private int count = 0;
      private boolean done = false;
      private Point pt;
      private Vector vec;

      public Foo()
      {
      pt = new Point(0, 0);
      vec = new Vector(10);
      }
      }

      ���̏ꍇ�́A�ȉ��̃R�[�h���œK�Ƃ����܂��B

      class Foo
      {
      private int count;
      private boolean done;
      private Point pt;
      private Vector vec;

      public Foo()
      {
      pt = new Point(0, 0);
      vec = new Vector(10);
      }
      }

      �e�^�̃f�t�H���g�l�͈ȉ��̒ʂ�ł��B

      �^�f�t�H���g�l
      booleanfalse
      char'\u0000'
      byte0
      short0
      int0
      long0
      float0
      double0
      �I�u�W�F�N�g�̎Q��null

      �����������̂̓C���X�^���X�ϐ���static�ϐ��ŁA�X�^�b�N�ϐ��͏���������Ȃ��̂Œ��ӂ��ĉ������B

  3. Java�R���p�C���CJIT�ɂ��I�v�e�B�}�C�Y


    1. ���\�b�h�� static, final, private�^�ɂ��ăC�����C��������

      �@static, final, private�^�̃��\�b�h�́AJava�R���p�C�����邢��JIT�ɂ���ăC�����C��������܂��B ���̃��\�b�h���p�ɂɌĂ΂��̂ł���΁A�C�����C���������Ό��I�ɍ����ɂȂ�܂��B
      �������A�C�����C���������ƃv���O�����T�C�Y�͑傫���Ȃ�܂�����A���̃��\�b�h�̑傫�����l�����邱�Ƃ��K�v�ł��B

      ���̗�̂悤�ȁA�A�N�Z�b�T�igetter, setter�j���\�b�h�Ȃǂ́A�T�C�Y���������A�g�p�p�x�������̂ŁA�C�����C�����̑ΏۂƂ��Ă͍œK�̂��̂Ƃ����܂��B

      class Test
      {
      private int length;

      public int getLength()
      {
      return length;
      }

      public void setLength(int val)
      {
      length = val;
      }
      }

      ��L�̃��\�b�h�����L�̂悤�� final�^ �ɂ��ăC�����C��������ƁA�R�{�ȏ�������Ȃ�܂��B

      class Test
      {
      private int length;

      public final int getLength()
      {
      return length;
      }

      public final void setLength(int val)
      {
      length = val;
      }
      }

      static, final, private�^�ɂ���ƁA���R�̂��ƂȂ���A�����͔h���N���X�ŕύX���邱�Ƃ͏o���Ȃ��Ȃ�̂ŁA���ł�����ł��ʼn_�ɃC�����C��������΂����Ƃ������̂ł͂���܂���B


    2. �萔��ϐ��Ŏw�肷��ꍇ�� final �w�肷��

      �@�萔��ϐ��Ŏw�肷��ꍇ�� final �w�������ƁA�R���p�C���͒萔�ɒu�������܂��B

      �ȉ��̗�ł́Aa, b �� final �w�肵�Ȃ��� c �͕ϐ��Ƃ��Ĉ����܂����A

      static int a = 30;
      static int b = 60;
      int c = a + b + 100;

      ���̂悤�� final �w�肷��ƒ萔�ɒu���������܂��B

      static final int a = 30;
      static final int b = 60;
      int c = a + b + 100;

  4. ���̑�


    1. ������̘A���� String ���� StringBuffer ���g��

      �@�������A������Ƃ��ɁA

      String str = new String("Practical ");
      str += "Java";

      �Ƃ�肪���ł��B
      ����́AStringBuffer ���g���āA

      StringBuffer str = new StringBuffer("Practical ");
      str.append("Java");

      �Ƃ����������Ȃ荂���ł��B�i���̃R�[�h�̏ꍇ�A��҂͑O�҂�萔�S�{�����ł��B�j

      Java�R���p�C���́A�O�҂̏ꍇ�AStringBuffer ���쐬���� append ���\�b�h���g���ĘA�����A���̌��ʂ��A�V���� String ���쐬���Ċi�[����R�[�h�𐶐����܂��B
      Java Native Code ��ł́A�O�҂͂T�‚̃I�u�W�F�N�g���쐬���܂����A��҂͂R�‚̃I�u�W�F�N�g���쐬���邾���ōς݂܂��B


    2. Vector �̌����� get���\�b�h ���g���� for ���[�v ������

      �@Java �� Vector �̗v�f��T������ɂ́A�ȉ��̗�̂悤�� Enumeration, Iterator, ListIterator, get���\�b�h ���g���S�‚̕��@������܂��B

      // Enumeration ���g�����T��
      public int enumVec(Vector vec)
      {
      Enumeration enum = vec.elements();
      int total = 0;
      while ( enum.hasMoreElements() )
      total += ((Integer)(enum.nextElement())).intValue();
      return total;
      }

      // Iterator ���g�����T��
      public int iterVec(Vector vec)
      {
      Iterator iter = vec.iterator();
      int total = 0;
      while ( iter.hasNext() )
      total += ((Integer)(iter.next())).intValue();
      return total;
      }

      // ListIterator ���g�����T��
      public int listIterVec(Vector vec)
      {
      ListIterator iter = vec.listIterator();
      int total = 0;
      while ( iter.hasNext() )
      total += ((Integer)(iter.next())).intValue();
      return total;
      }

      // for���[�v �� get���\�b�h ���g�����T��
      public int forVec(Vector vec)
      {
      int size = vec.size();
      int total = 0;
      for ( int i=0; i<size; i++ )
      total += ((Integer)(vec.get(i))).intValue();
      return total;
      }

      ���̗�̃P�[�X�ł́AIterator ���g�����ꍇ�� ListIterator ���g�����ꍇ�̏������Ԃ͂قƂ�Ǔ����ł����AEnumeration ���g�����ꍇ�͂P�Q���قǍ����ł��B
      �Ƃ��낪�Aget���\�b�h �� for���[�v ���g�����ꍇ�́A���������Q�X�`�R�S���������ɂȂ�܂��B
      ����́AEnumeration, Iterator, ListIterator ���g�������ł́A���[�v�������ŌĂяo�����\�b�h���P�񑽂��i hasMoreElements(), hasNext(), hasNext() �j���߂ł��B


    3. Vector �� ArrayList ���� �z�� ���g��

      �@�ȉ��́A�T�����đ�����邾���̓��ɈӖ��̂Ȃ��v���O�����ł����AArrayList �� Vector �����S�{�����ŁA����ɁA�z�� �� ArrayList �����P�P�{�����ł��B

      // Vector ���g��
      public void iterateVector(Vector vec)
      {
      int size = vec.size();
      Object j;
      for ( int i=0; i<size; i++ )
      j = vec.get(i);
      }

      // ArrayList ���g��
      public void iterateArrayList(ArrayList al)
      {
      int size = al.size();
      Object j;
      for ( int i=0; i<size; i++ )
      j = al.get(i);
      }

      // �z�� ���g��
      public void iterateArray(int[] ar)
      {
      int size = ar.length;
      int j;
      for ( int i=0; i<size; i++ )
      j = ar[i];
      }

      Vector ���֗��Ŏg���₷�����Ƃ͂킩��܂����A�������x�̂��Ƃ��l����Δz��Ŏ������̂ł���Δz����g���ׂ��ł��傤�B

    4. �z��̃R�s�[�ɂ� System.arraycopy ���g��

      �@�z����R�s�[�������Ƃ��́A�f���Ɉȉ��̂悤�ɂ���ł��傤�B

      // for���[�v ���g�����z��̃R�s�[
      public void copyArray(int[] src, int[] dest)
      {
      int size = src.length;
      for ( int i=0; i<size; i++ )
      dest[i] = src[i];
      }

      �Ƃ��낪�A���̏����͎��̂悤�� System.arraycopy ���g���������Q�{�ȏ�������ł��B

      // System.arraycopy ���g�����z��̃R�s�[
      public void copyArray(int[] src, int[] dest)
      {
      int size = src.length;
      System.arraycopy(src, 0, dest, 0, size);
      }

    5. ���ʕ������͕ϐ��ɒu��������

      �@�J��Ԃ��g�p���鋤�ʕ������́A�ϐ��ɒu�������邱�Ƃɂ���Ď��̕]���͂P��ōςނ��ƂɂȂ�A�������Ԃ��Z�k����܂��B

      ���̃R�[�h�́A

      SomeObject[] someObj = new SomeObject[N];
      someObj[i+j] = new SomeObject();
      someObj[i+j].foo(k);
      someObj[i+j].foo(k+1);
      someObj[i+j].foo(k+2);
      someObj[i+j].foo(k+3);
      someObj[i+j].foo(k+4);

      someObj[i+j] �� tempObj �ɒu�������āA

      SomeObject[] someObj = new SomeObject[N];
      someObj[i+j] = new SomeObject();
      SomeObject tempObj = someObj[i+j];
      tempObj.foo(k);
      tempObj.foo(k+1);
      tempObj.foo(k+2);
      tempObj.foo(k+3);
      tempObj.foo(k+4);

      �Ƃ��邱�Ƃɂ���ĂQ�{�����ɂȂ�A����ɃT�C�Y���������Ȃ�܂��B

      ����́A���[�v���œ����������s����ꍇ�������ł��B

      int a = 10;
      int b = 20;
      int[] arr = new int[val];
      for ( int i=0; i<i; i++ )
      arr[i] = a + b;

      ����

      int a = 10;
      int b = 20;
      int c = a + b;
      int[] arr = new int[val];
      for ( int i=0; i<i; i++ )
      arr[i] = c;

      �̕��������ł��B

    6. ���[�v��W�J����

      �@���[�v���g��Ȃ��ŌX�ɏ�������Α����Ȃ�܂����A���ʂ���͂��Ȃ��ł��傤�B

      �ȉ��̗�ł́A

      int[] ia = new int[4];
      ia[0] = 10;
      ia[1] = 10;
      ia[2] = 10;
      ia[3] = 10;

      �́A

      int[] ia = new int[4];
      for ( int i=0; i<4; i++ )
      ia[i] = 10;

      �����V�������ł��B