Question: If I inspect on the little bird icon on twitter.com I see that its css has `content: "/f179"`. Is this for twitter's icon? Is this for a special font with lots of special characters including twitter's icon?

Answer: 
Serialization and the `new` operator are completely different things, though they both result in a reference to a newly allocated object.

You can find detailed information about the `new` operator in chapter *15.9.4 Run-Time Evaluation of Class Instance Creation Expressions* of the [Java Language Specification](https://docs.oracle.com/javase/specs/jls/se8/jls8.pdf).

> 
> At run time, evaluation of a class instance creation expression is as follows.  
> 
>  [...]  
> 
> **Next, space is allocated for the new class instance.**  
> 
>  [...]
>  The new object contains new instances of all the fields declared in the specified
>  class type and all its superclasses.  
> 
>  [...]
>  Next, the actual arguments to the constructor are evaluated, left-to-right. [...]  
> 
> **Next, the selected constructor of the specified class type is invoked.** This results in
>  invoking at least one constructor for each superclass of the class type.  
> 
>  The value of a class instance creation expression is a **reference to the newly created
>  object** of the specified class. Every time the expression is evaluated, **a fresh object
>  is created.**
> 
> 
> 

Editing mine  

So long story short, `new` allocates space for a new object (specifically space for its fields), initialize its fields with their default values and invokes the chosen constructor.

---

[Java Serialization](https://docs.oracle.com/javase/7/docs/platform/serialization/spec/serialTOC.html) is another matter entirely. 

> 
> The ability to store and retrieve JavaTM objects is essential to building all but the most transient applications. **The key to storing and retrieving objects in a serialized form is representing the state of objects sufficient to reconstruct the object(s).**
> Emphasis mine
> 
> 
> 

Which means that serialization was designed to allow the programmer to save objects states into a persistent medium (abstracted into *stream* within Java) and [read them back](https://docs.oracle.com/javase/7/docs/platform/serialization/spec/input.html#2971). 

As such, deserializiation does not invoke constructors since the object state is restored automatically by reading it out the stream. You can override the default behavior though.

> 
> Reading an object from the ObjectInputStream is analogous to creating a new object. Just as a new object's constructors are invoked in the order from the superclass to the subclass, an object being read from a stream is deserialized from superclass to subclass. **The readObject or readObjectNoData method is called instead of the constructor** for each Serializable subclass during deserialization.
> 
> 
> 

Emphasis mine

---

Said that, I would like to stress out how using `new` and serialization are totally unrelated things from a conceptual point of view.  

In the first case you are creating your own new object, in the latter you are reading a previously saved object (possibly by someone else). 

Even though they can be thought as similar for their final result, you should have, in your mind, a really clear distinction between the twos.
New operator is use to create object in memory whereas serialization is the concept belongs to data persistence and it could also be used for creating a new object in memory. 

If an object implements java.io.Serializable it will be marked as Serializable Object and data in object could be converted to byte stream (serialize) and we could use this byte stream data to create a new object in memory (desrialize). Java supports 2 objects for serialize and deserialize, they are ObjectInputStream and ObjectOutputStream