Thanks for sharing your code.

This looks pretty good for a novices code since you managed to remove some code duplication by using parameterized methods.

here is what I would change:

# Naming
Finding good names is the hardest part in programming, so always take your time to think about the names of your identifiers.

### Naming Conventions

Please read (and follow) the 
[Java Naming Conventions](http://www.oracle.com/technetwork/java/codeconventions-135099.html).

eg .: variables of type  `boolean` (like `gameOver`) or methods returning a  `boolean` should start with *`is`, `has`, `can` or alike.

### Don't surprise your readers
Your method `askForTurn()` does nor only acquire user input, it actually *does* the turn. So it should better be named `doTurn()`.

# Magic numbers
replace the *literal numbers* by constants with expressive names.

# Separation of Concerns
`askForTurn()` does more than one thing:

- it acquires user input,
- validates the user input
- translates the input into a field position
- checks the end condition

each of this actions should live in a method of its own.

# hidden recursion/implicit error handling
In case of an invalid input you do a recursive call to `askForTurn()`.
Beside that this also belongs in the *Don't surprise your readers* category it is a potential memory leak.


# Use of the `static` key word
The only method that should be static in your code should be `main`.
For the rest of your code you should avoid the `static` key word unless you have a *good reason* to use it. 

In your case it would be quiet easy to do:  
move the `while` loop from `main` into a new (non static) method and call it on an instance of the class:

    public static void main(String[] args) {
        new TicTacToe().runTheGame();
    }

This would safe you from all the `static`s in your program.