How to use "Wait statement" in Selenium Webdriver Script

Using Wait Statement with method
 
Implicit Wait
  1. public void implicitWaitforSeconds(WebDriver driver, int time) {  
  2.         driver.manage().timeouts().implicitlyWait(time, TimeUnit.SECONDS);  
  3.     } 
Explicit Wait
  1. public void explicitWait(WebDriver driver, int time, WebElement element) {  
  2.     WebDriverWait wait = new WebDriverWait(driver, time);  
  3.     wait.until(ExpectedConditions.visibilityOf(element));  

PageLoad Wait
  1. public void pageloadforSecond(WebDriver driver, int time) {  
  2.     driver.manage().timeouts().pageLoadTimeout(time, TimeUnit.SECONDS);  

Fluent Wait
  1. public void fluentWait(WebDriver driver, int timesec, int timemilisec) {  
  2.     FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);  
  3.     wait.withTimeout(timesec, TimeUnit.SECONDS);  
  4.     wait.pollingEvery(timemilisec, TimeUnit.MILLISECONDS);  
  5.     wait.ignoring(NoSuchElementException.class);  
  6.     wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpathExpression)));  

Using Wait statement without method
 
Implicit Wait
  1. driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS); 
Explicit Wait
  1. WebDriverWait wait = new WebDriverWait(driver, 20);  
  2. wait.until(ExpectedConditions.visibilityOf(element)); 
PageLoad Wait
  1. driver.manage().timeouts().pageLoadTimeout(20,TimeUnit.SECONDS); 
Fluent Wait
  1. FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);  
  2. wait.withTimeout(60,TimeUnit.SECONDS);  
  3. wait.pollingEvery(2,TimeUnit.MILLISECONDS);  
  4. wait.ignoring(NoSuchElementException.class);  
  5. wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpathExpression))); 
Sleep
  1. thread.sleep(2000);