\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{OzzyCodes} \pdfinfo{ /Title (java-ood-cheat-sheet.pdf) /Creator (Cheatography) /Author (OzzyCodes) /Subject (Java\_OOD Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{1F23A3} \definecolor{LightBackground}{HTML}{F1F1F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Java\_OOD Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{OzzyCodes} via \textcolor{DarkBackground}{\uline{cheatography.com/64666/cs/16298/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}OzzyCodes \\ \uline{cheatography.com/ozzycodes} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 10th July, 2018.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Loops}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{for}} (int i: someArray) \{\}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{while}} (somet​hing) \{\}} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{do}} \{somet​hing\} {\bf{while}} (true)} \tn % Row Count 3 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Defining Variables}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Defining new variable attributes}} \{\{nl\}\} int {\emph{x}} = 12; \{\{nl\}\} int {\emph{x}}; // will be defined as 0} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Define by creating new instan​ces}} \{\{nl\}\} String {\emph{x}} = new String;} \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Conditionals}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\{\{fa-bitcoin\}\} {\bf{if statement}} \{\{nl\}\} {\bf{if}} (statement) \{\}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{\{\{fa-bitcoin\}\} {\bf{if-else statement}} \{\{nl\}\} {\bf{if}} (statement) \{\} \{\{nl\}\} {\bf{else}}\{\}} \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Switch Statement}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{switch (num) \{ \newline case 1: doSomething (); \newline break; \newline default: doThis (); \newline break; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Override}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{When you have inherit some of the class from \newline parents, but you want to do something different. \newline In override feature, all the subclass/class object \newline will use the newer method. \newline To make sure JDK knows what you are doing, \newline type {\emph{@Override}} in front of the public name. If \newline the override is unsuccessful, JDK will returns \newline error. \newline Example of overriden helloWorld() method : \newline \newline Class Student \{ \newline public void helloWorld() \{ \newline \seqsplit{System.out.println("Hello");} \newline \} \newline \} \newline \newline Class GradStudent extends Student \newline \newline @Override \newline public void helloWorld() \{ \newline \seqsplit{System.out.println("Hello} World"); \newline \} \newline \} \newline \newline {\bf{Rules of Overridden methods}} \newline 1. Access modifier priority can only be \newline narrower or same as superclass \newline 2. There is the same name method in \newline superclass / libraries} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Prime Number Function}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{if (n \textless{} 2) \{ \newline return false; \newline \} \newline for (int i=2; i \textless{}= n/i; i++) \{ \newline if (n\%i == 0) \{ \newline return false; \newline \} \newline return true; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Access Modifier}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{5.377cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/ozzycodes_1531241303_java-access-modifiers.png}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.89126 cm} x{3.08574 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Attribute Modifier}} \tn % Row 0 \SetRowColor{LightBackground} \{\{bt\}\}{\bf{ATTRIBUTE TYPE}} & \{\{bt\}\}{\bf{ACCESS GRANTED}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \{\{bl\}\}Private & \{\{bl\}\}Allows only in class where variables belong \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} \{\{bl\}\}Public & \{\{bl\}\}Allows any class to have this attribute \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} \{\{bl\}\}Protected & \{\{bl\}\}The methods or data members declared as protected are accessible within same package or sub classes in different package \tn % Row Count 13 (+ 6) % Row 4 \SetRowColor{LightBackground} \{\{bl\}\}Static & \{\{bl\}\}Attribute that depends on the class (not object) \tn % Row Count 16 (+ 3) % Row 5 \SetRowColor{white} \{\{bl\}\}Final & \{\{bl\}\}Defined once; does not allow any changes/inheritance \tn % Row Count 19 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{java.lang.String}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Find the length}} -\textgreater{} int \newline \{\{fa-bitcoin\}\} msg.length() \newline {\bf{To lower/uppercase}} -\textgreater{} String \newline \{\{fa-bitcoin\}\} msg.toLowerCase() \newline \{\{fa-bitcoin\}\} msg.toUpperCase() \newline {\bf{Replace a string}} -\textgreater{} String \newline \{\{fa-bitcoin\}\} msg.replaceAll(String a, String b) \newline {\bf{Split string between delimeter}}-\textgreater{} array \newline \{\{fa-bitcoin\}\} msg.split(String delimeter) \newline {\bf{Start/end with}} -\textgreater{} boolean \newline \{\{fa-bitcoin\}\} msg.startsWith(String pre) \newline \{\{fa-bitcoin\}\} msg.endsWith(String post) \newline {\bf{String format}} -\textgreater{} String \newline \{\{fa-bitcoin\}\} String.format(String format, \newline Object... args)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Interface}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Interface is different from constr​uctor. It {\bf{consists of incomplete assign​ments}}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Interface allows you {\emph{to make sure}} that any inherited class will implement the methods} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{(It's like a contract to agree that this thing must be able to do this shit.) The method is then completed in the class that implements it.} \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Creating a new interf​ace} \tn % Row Count 8 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Constructors}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Constr​uctors}} allow you to create an object \newline % Row Count 1 (+ 1) template. It consists of {\bf{complete proced​ures}}. \newline % Row Count 3 (+ 2) {\bf{Create a blank constr​uctor}} to allow its \newline % Row Count 4 (+ 1) extension classes to inherit this {\emph{super}} \newline % Row Count 5 (+ 1) constr​uctor. \newline % Row Count 6 (+ 1) \{\{fa-bitcoin\}\} \textless{}modifier\textgreater{} Person () \{\}% Row Count 7 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Abstract}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Abstract}} is a type of class but it can consist of \newline % Row Count 2 (+ 2) {\bf{incomplete methods.}} \newline % Row Count 3 (+ 1) {\bf{Create new abstract}} \newline % Row Count 4 (+ 1) \{\{fa-bitcoin\}\} \textless{}access\_modifier\textgreater{} abstract class \newline % Row Count 5 (+ 1) HelloWorld () \{\}% Row Count 6 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Interface}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Interface is different from constructor. It \newline {\bf{consists of incomplete assignments}} \newline Interface allows you to make sure that any \newline inherited class can do the following methods. \newline The method is then completed in the class that implements it. \newline \newline {\bf{Creating a new interface}} \newline \newline interface Bicycle \{ \newline void speedUp (int increment); \newline \} \newline -{}-{}-{}- \newline class funBike implements Bicycle \{ \newline ... \newline \newline void speedUp (int increment) \{ \newline \newline speed += increment; \newline \} \newline ... \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.33919 cm} x{2.63781 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{HashList}} \tn % Row 0 \SetRowColor{LightBackground} \{\{bb\}\}{\bf{Methods}} & \{\{bb\}\}{\bf{Description}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} void add (int index, Object element) & \{\{bl\}\}Add value to a list \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} Object remove(int index) & \{\{bl\}\}Remove item \#index from list \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} Object get(int index) & \{\{bl\}\}Retreive item \#index from list \tn % Row Count 7 (+ 2) % Row 4 \SetRowColor{LightBackground} void set(int index, Object element) & \{\{bl\}\}Set the data to correspond with \#index \tn % Row Count 10 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}