#LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass article \language english \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize Default \paperpackage a4 \use_geometry 1 \use_amsmath 0 \paperorientation portrait \leftmargin 1in \topmargin 1in \rightmargin 1in \bottommargin 1in \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Standard Paul Johnson \layout Standard Java notes day 2. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard 1) Arrays \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ An array is an object into which you can put other things. \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ you can put in primitives \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ you can put in objects \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ Declare an array as \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ type[] name ; \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ And the create the array with \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ name = new type[n_of_items]; \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ Access the i'th element as \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ name[i] \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ example2.1\SpecialChar ~ (note overloaded printTheArray method) \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ Note items in an array are numbered from 0 to N-1, and this \layout Standard index number is sometimes called the offset. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ example2.2. Put objects into an array, get them out! \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard 2) Static \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard Take a close look at a class: \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard public class Student extends Object { \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ static String teacher;\SpecialChar ~ //look, it's a class variable. \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ String myName;\SpecialChar ~ //look, it's an instance variable \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ public Student (String s){\SpecialChar ~ //look, it's a constructor \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ myName = s; \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ } \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ //look, it's a static (class) method \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ public static void setTeacherName(String s){ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ teacher = s; \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ } \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard 1. key terms in creating classes/fields \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ static: \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ a static field means there is only one of these for each \layout Standard class. You can set the value of this field even if no instances exist. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ All instances share this thing. \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ static methods are ones that the class itself can execute. \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ must not directly access instance variables \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ I (personally) think there is a mistake in java's \layout Standard design because static methods can be called either by the class name \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ Student.setTeacherName("bob"); \layout Standard \SpecialChar ~ \layout Standard Or, if you have an instance of the class, you can tell the instance to \layout Standard do the same thing: \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ aParticularStudent.setTeacherName("bob"); \layout Standard \SpecialChar ~ \layout Standard As far as I know, other languages don't allow instances to execute \layout Standard class methods. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ Please also note that since teacher is a public static \layout Standard variable, we could access it directly as: \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ Student.teacherTeacherName; \layout Standard \SpecialChar ~ \layout Standard instead of using the method setTeacherName.\SpecialChar ~ I don't like doing it \layout Standard that way for information hiding reasons. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard 3) Inheritance and project design. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ interface--list of methods all subclasses must implement.\SpecialChar ~ Any \layout Standard class can adopt this interface, which means a promise to implement its \layout Standard methods. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ abstract class--methods list, similar in nature to interface, \layout Standard but it cannot be adopted by any class except a subclass. \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ inner classes \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \layout Standard 4) Using packages \layout Standard \SpecialChar ~ \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ If it is a jar file, add the jar file to the CLASSPATH \layout Standard \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ if it is *.class files, add the directory to the CLASSPATH \the_end