Difference between Webdriver get() and Webdriver navigate()

The first thing you’ll want to do with WebDriver is navigate to a page. The normal way to do this is by calling get:
Syntax: get(java.lang.String url) url - The URL to load. It is always best to use a fully qualified URL
Example: driver.get("http://www.google.com"); which loads a new web page in the current browser window.
Webdriver will wait until the page has fully loaded before returning the control to test or script. If there are many ajax calls in the current page which webdriver is loading then the webdriver may not know when the page has loaded completely. If you need to make sure such pages are fully loaded then you can use waits and the proceed further.

If you just use driver.get("www.google.com"); Then you will see an error some thing like below, because it treats that as an invalid URL.
org.openqa.selenium.WebDriverException: unknown error: unhandled inspector error: {"code":-32603,"message":"Cannot navigate to invalid URL"}.
Earlier, we covered navigating to a page using the get command (driver.get("http://www.example.com")) As we have seen, webdriver has a number of smaller, task-focused interfaces, and navigation is a useful task. Because loading a page is such a fundamental requirement, the method to do this lives on the main webdriver interface, but it’s simply a synonym to:
Example: driver.navigate().to("http://www.google.com");
navigate().to() and get() do exactly the same thing. One's just a lot easier to type than the other!
There is an other overloaded method navigate().to(java.net.URL url) which makes it easy to pass in a URL. Here java.net.URL class represents a URL which has set of methods to manipulate URL in Java.
The navigate interface also has the ability to move backwards and forwards in your browser’s history:
We can also use Actions class of WebDriver to perform page refresh
Actions actions = new Actions(driver);