Em Java, o tipo char é um tipo de dado primitivo que representa um caractere único. Ele ocupa 2 bytes (16 bits) de espaço na memória. Embora o tipo char possa ser representado como um número inteiro (por exemplo, o caractere 'A' tem o valor decimal 65), não é apropriado usá-lo para operações aritméticas, já que ele é projetado para lidar com caracteres e não com números.
O tipo double em Java é um tipo de dado primitivo que representa números de ponto flutuante com precisão dupla de 64 bits. Ele pode armazenar números com uma precisão de até 15 dígitos decimais, e sua faixa de valores é de aproximadamente ±4,9 x 10^-324 a ±1,8 x 10^308. O tipo float, por sua vez, é um tipo de ponto flutuante de precisão simples de 32 bits, com uma faixa de valores de aproximadamente ±1,4 x 10^-45 a ±3,4 x 10^38. Como o float tem menos bits para representar números, sua precisão é menor do que a do double.