Char:
char es un tipo de datos primitivo que se utiliza para contener un solo carácter. Significa un solo carácter del conjunto de caracteres UTF-16. En comparación, String es una clase que contiene una secuencia de caracteres y se puede considerar como un array de caracteres.
Fuente: https://www.delftstack.com/es/howto/java/char-vs-string-in-java/
Int:
El tipo int (del inglés integer, que significa «entero») permite representar números enteros. Los valores que puede tomar un int son todos los números enteros
Fuente: http://progra.usm.cl/apunte/materia/tipos.html
Integer:
Java Integer es la clase del lenguaje Java que nos permite convertir un tipo básico int en un objeto. Esta clase contiene varios métodos estáticos que permiten realizar conversiones comunes de una forma rápida entre int e Integer o entre Integer y String.
Fuente: https://www.arquitecturajava.com/java-integer-wrapper-y-certificacion/
Nota: int es nativo e integer es una clase.
La diferencia sustancial es que, en JAVA, int es un tipo primitivo, no un objeto, mientras que Integer es un objeto o una Clase. Dicho en lenguaje coloquial: un int es un número, y un Integer es un puntero que hace referencia a una clase que contiene un entero.
Fuente:https://es.stackoverflow.com/questions/54419/diferencia-entre-int-e-integer#:~:text=La%20diferencia%20sustancial%20es%20que,clase%20que%20contiene%20un%20entero.
Te deje las fuentes para que leas mas sobre cada uno. Adios.