Question: When I construct a new `BufferedReader` it is providing me a buffer of 8192 characters. What is the logic/reason behind this?

```
8192 = 2 to the power of 13

```

Answer: 
8192, as you said, is 2^13. The exact reason for this number being the default is hard to come by, but I'd venture to say it's based on the combination of normal use scenarios and data efficiency. You can specify a buffer size of whatever you want, though, using a different object constructor.

```
BufferedReader(Reader in, int sz)

```

Creates a buffering character-input stream that uses an input buffer of the specified size.

<https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html>
and [BufferedReader default buffer size?](https://stackoverflow.com/questions/16973843/bufferedreader-default-buffer-size) will provide further insight.
There is a JDK ticket <https://bugs.openjdk.org/browse/JDK-4953311> that states

> 
> Most OSes that we support uses a buffer size of 8192 (8K) bytes for their IO buffering, and this is also the buffer size used by Microsoft VM on Win32. We should change the default buffer size in these two classes to 8K.
> 
> 
>