Decimal is base-10. That means that there's 10 different symbols you can put together to create a number: 1234567890. 
Binary is base-2, with just two different symbols: 10. 
What would base-1 be? It's Unary: 1.
Let's take decimal 4. 
In binary that's 100. 
Unary is even easier to learn than binary. It's 1111.
Let's represent a unary integer as a String: "11111" (five) 
How do we convert a unary integer to a (binary / decimal) int? 
(reminder: java has a REPL /usr/lib/jvm/java-*-openjdk/bin/jshell)
"11111".length() == 5;
(hover over or highlight the code to reveal spoilers)
Next, let's do addition. 
"1111" + "11" should equal "111111" (six).
"1111" + "11" == "111111"; // string concatination // it's that simple
Subtraction is a little harder. 
"1111" - "111" == "1"
"1111".replaceFirst("111", "") == "1";
How about some enlightenment? 
Let's implement multiplication and division at the same time. 
If you aren't using the spoilers at this point, 
"1111" * "11" == "11111111" (eight) and "11111111" / "11" == "1111"
// multiply
"1111".replace("1", "11") == "11111111";
// divide
"11111111".replace("11", "1") == "1111";
If you looked at the above spoiler, there is a bug with division. 
What is it?
This implementation has a bug with division. 
If the number isn't cleanly divisible with the divisor, the remainer will be added to the result. 
It's simple to fix this by writing a for/while loop, but is there a function in the standard library that fixes this?
If you did multiplication and division the same way I did, fractional multiplication is the next step. 
"111".replace("111", "11") == "11"
"111111".replace("111", "11") == "1111"
// multiplication by two thirds
// division is actually multiplication by a fraction
What would a square function look like? 
What would a exp function look like? 
There is a way to represent zero. Would the functions you wrote work with this representation? 
Is there a way to represent negative numbers while keeping all operations one-liners?