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: 
As the [`BufferedReader` Javadoc](https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html) says

> 
> The buffer size may be specified, or the default size may be used. The default is large enough for most purposes. 
> 
> 
> 

The default was chosen as being "large enough" (which I would *interpret* as "good enough").
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.