OOP

The process of binding related classes, objects and operations together is called Encaps­ulation

Using access modifiers, packages

Abstra­ction

The process of specifying what to do without specifying how to do it

Using abstract classes and interfaces

Inheri­tance

When one class inherits the properties of another class

Using Aggreg­ation, Compos­ition

Polymo­rphism

Same thing is done in different ways

Using compil­e-time and run-time polymo­rphism

Encaps­ulation

default

accessible to classes only in the same package

public

accessible to all classes in any package

private

accessible to only a specific method, or class

protected

accessible to classes in the same package, and sub-cl­asses of this class

Abstra­ction

Abstract Class

When a class has one or more unimpl­emented methods, it should be declared abstract. The sub-cl­asses should provide implem­ent­ation for the unimpl­emented methods, else they should also be declared abstract

Used: When default implem­ent­ation is needed for some methods, and specific implem­ent­ations for other methods based on the class implem­enting them

Interface

Blueprint of a class. It contains only static, final variables and only unimpl­emented methods. Classes implement the interface should implement all methods of the interface, or be declared abstract

Inheri­tance

Java does't support multiple inheri­tance directly, it supports it only via Interfaces

Polymo­rphism

Compil­e-time

Also called overlo­ading. When methods have same name but different signature (retur­n-type, number of parame­ters, type of parameters etc)

Run-time

Also called overri­ding. When child-­classes over-write method implem­ent­ations of parent­-class.

static keyword

static field

Shared by all members of the class. It can be accessed before objects are created

static method

Can be accessed without creating an instance of the class. They can only access static variables and static methods. Cannot access this or super

static block

Used when some comput­ation is to be done to initialize the static variables. This block is executed once when the class is initially loaded into memory

static class

We cannot declare top-level classes as static. Only inner classes can be static. A static class cannot access non-static members of the Outer class. It can access only static members of Outer class

final

fields

treated as constants

methods

cannot be overridden by child classes

classes

cannot be inherited

finalize( )

finalize() method is a protected and non-static method of java.l­ang.Object class. This method will be available in all objects you create in java. This method is used to perform some final operations or clean up operations on an object before it is removed from the memory

String Creation

Literal : String s = " "

Creates Strings in String pool, in JVM. Multiple strings can have same value. Only one copy of the word exists in the String pool, and the references of it are updated.

Object: String s = new String( );

Creates a string object in heap. The heap in-turn checks the JVM String Pool to see if there exists a string with same value.

String Immuta­bility

Strings in java are immutable because changing the value of a String literal changes the value of other Strings that reference the literal, which leads to incons­istency in the program. To prevent this, strings in java are immutable.

Storing passwords in Strings

It is best to store passwords as char[ ] because if passwords are stored as Strings, the string tends to be in the JVM pool even after all references to it no longer exist. This causes a vulner­ability in the system. In case of Char[ ], once all the references to char[ ] are gone, the Java Garbage Collector deletes the char[ ] to preserve memory. So, it's safer.

String­Bui­lder, String­Buffer

String­Builder

To create mutable strings in Java

String­Buffer

To create thread­-safe mutable strings in Java

String methods

s.char­At(int index)

s.comp­are­To(s2), s.comp­are­ToI­gno­reC­ase(s2)

s.conc­at(s2)

s.cont­ain­s(s­equence of charac­ters)

s.equa­ls(s2), s.equa­lsI­gno­reC­ase(s2)

s.length()

s.repl­ace­(ch­ara­cter, replac­ement) )

s.repl­ace­All­(ch­ara­cter, replac­ement)

s.subS­tri­ng(int startI­ndex)

s.subS­tri­ng(int startI­ndex, int endIndex)

s.toUp­per­Case( ), s.toLo­wer­Case( )

s.toCh­arA­rray()

s.trim( )

String s = String.va­lue­Of(int, or long or double)

String[] s1 = s.split( String regex)

String[] s1 = s.spli­t(S­tring regex, int limit )

String­Buffer, Stribg­Builder methods

s.appe­nd(s2)

s.dele­teC­har­At(int index)

s.inde­xOf­(string ), s.inde­xOf­(st­ring, fromIndex)

s.inse­rt(int index, object­Value)

s.repl­ace(int startI­ndex, int endIndex, String)

s.reverse( )

s.toSt­ring( )

s.trim­ToSize( )

s.setC­har­At(int index, charSe­quence)

How's Your Readability?

Cheatography is sponsored by Readable.com. Check out Readable.com to make your content and copy more engaging and support Cheatography!

About Cheatography

10th JuneOn The Blog

5 Ways Cheatography Benefits Your BusinessCheatography Cheat Sheets are a great timesaver for individuals - coders, gardeners, musicians, everybody! But businesses can benefit from them as well - read on to find out more.