Scopo di un costruttore in Java?

Qual è lo scopo di un costruttore? Ho studiato Java a scuola e mi sembra che un costruttore sia in gran parte ridondante nelle cose che abbiamo fatto fino ad ora. Resta da vedere se uno scopo arriva, ma finora mi sembra privo di significato. Ad esempio, qual è la differenza tra i seguenti due snippet di codice?

public class Program { public constructor () { function(); } private void function () { //do stuff } public static void main(String[] args) { constructor a = new constructor(); } } 

Questo è il modo in cui ci è stato insegnato a fare cose per incarichi, ma il sotto non farebbe lo stesso affare?

 public class Program { public static void main(String[] args) { function(); } private void function() { //do stuff } } 

Lo scopo di un costruttore mi sfugge, ma poi tutto ciò che abbiamo fatto finora è stato estremamente rudimentale.