This is exactly what a constructor is for - to validate the data you store in your object.
You will need to decide what is the appropriate thing to do if someone tries to make an object with a value of -4. Will your program crash? set a default value of 0? return a null object (which may have other consequences...)
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
It's possible, but your own data type will not work like one of the built-in primitive types - Java has a fixed set of 8 primitive types (byte, short, int, long, char, boolean, float, double), you can't add your own primitive types. Also, Java has no operator overloading so you will not be able to define your own +, -, *, / and other operators for your own unsigned integer data type.