Dúvida Simples

Primeiramente, olá a todos.

Sou estudante de física e já tenho algum conhecimento em programação (Fortran para computação científica). Estou iniciando Java como autodidata através da apostila do curso fj-11, disponivel gratuitamente pela empresa caelum (pra ser sincero, tenho vontade de fazer o curso, não o fiz por causa da distância, sou de teresina).

Estou com uma dúvida simples. No capítulo 3, fiz os procedimentos dentro de uma classe que chamei de capitulo3 (nome para organização dos código-fonte dentro do projeto).
Na hora do exercício, ele sugere a criação de uma classe para verificar o valor de um saldo, coloquei esse código LOGO EMBAIXO do outro, ficando dessa forma:

/*
 * Capítulo 3 - Variáveis primitivas e Controle de fluxo
 * 
 *	Objetivos:
 *		1 - Declaração, atribuição de valores, casting e comparação de variáveis;
 *		2 - Controle de fluxo através de if e else;
 *		3 - Instruções de laço for e while
 */

class Capitulo3 {
	/*
	 * Iniciando a classe. Antes de qualquer método, vamos criar algumas variáveis
	 * Regra: Em Java, devemos declarar o tipo da variável antes de criá-la.
	 */
	
	public static void main(String[] args){
	// Começo do miolo
		
		int idade;					// Criando uma variável chamada idade do tipo INTEIRO
		idade = 15;					// Atribuindo o valor 15 a variável idade
		System.out.println(idade);	// Imprimindo o valor da variável na tela
		
		// Vamos calcular a idade no ano seguinte?
		
		int idadeNoAnoQueVem;			// Criando uma variável chamada idadeNoAnoQueVem do tipo INTEIRO
		idadeNoAnoQueVem = idade + 1;	// Atribuindo a variável criada o valor da variável idade mais o valor inteiro 1
		System.out.println(idadeNoAnoQueVem);
		
		// Trabalhando agora com outros tipos de variáveis
		
		double pi = 3.14; // Criando a variável pi do tipo double já atribuindo um valor a ela [é praticidade]
		double x = 5 * 10; // Obs: O tipo double armazena numeros reais, podendo armazenar também inteiros
		
		System.out.println(pi);
		System.out.println(x);
		
		boolean verdade = true; // Criando a variável verdade do tipo boolen. Obs: esse tipo armazena somente TRUE ou False e só
		System.out.println(verdade);
		
		/*
		 * Interessante: É comum que o boolean seja determinado através de uma
		 * expressão booleana, isto é, um trecho de código que retorna um booleano.
		 * vamos fazer um exemplo?
		 */
		
		int IDADE = 30;
		boolean menorDeIdade = IDADE < 18;
		boolean maiorDeIdade = IDADE > 18;
		
		System.out.println(menorDeIdade);
		System.out.println(maiorDeIdade);
		
		// Outro Exemplo, improvisando ...
		
		int idade1 = 28; // um valor qualquer
		int idade2 = 14; //  ... 
		int idade3 = 79; //  ...
		
		int voto = 16; // Idade Mínima de voto
		int opcional = 70; // Idade Máxima Obrigatória
		
		boolean votoOpcional = idade2 <= voto && idade3 >= opcional;	// utilizando operadores lógicos 
		boolean votoObrigatorio = idade1 >= 18 && idade3 <= opcional;	// aqui tambem
		boolean retornoFalso = idade3 >= opcional && idade1 >= voto;	// uma condicao false: && retornará false 
		
		System.out.println(votoOpcional); 		// return true
		System.out.println(votoObrigatorio); 	// too
		System.out.println(retornoFalso); 		//return false
		
		
		char letra = 'a'; // Variáveis do tipo char guarda apenas um único caractere
		char caractere = 'ç'; // Testando outros tipos de caractere
		char caractere2 = '|';
		char caractere3 = '`';
		System.out.println(letra + "\n" + caractere + "\n" + caractere2 + "\n" + caractere3); // concatenando ...
		
	// Fim do Miolo	
	}
}

/*
 * Exercício 1 - Na empresa onde trabalhamos, há tabelas com o quanto foi gasto em cada mês. Para fechar
 * o balanço do primeiro trimestre, precisamos somar o gasto total. Sabendo que, em Janeiro, foram gastos
 * 15000 reais, em Fevereiro, 23000 reais e em Março, 17000 reais, faça um programa que calcule e imprima
 * o gasto total no trimestre.
 * 
 * Dicas:	a) Crie uma classe chamada BalancoTrimestral com um bloco main, como nos exemplos anteriores;
 * 			b) Dentro do main, declare uma variável inteira chamada gastosJaneiro e inicialize-a com 15000;
 * 			c) Crie também as variáveis gastosFevereiro e gastosMarco inicializando-as com os valores ditos;
 * 			d) Crie uma variável chamada gastosTrimestre e inicialize-a com a soma das 3 outras variáveis
 * 				int gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco;
 * 			e) e Imprima o valor da variável gastosTrimestre 
 */

class gastosTrimestral {
	public static void main(String[] args) {
		int gastosJaneiro = 15000;
		int gastosFevereiro = 23000;
		int gastosMarco = 17000;
		int gastosTrimestral;
		gastosTrimestral = gastosJaneiro + gastosFevereiro + gastosMarco;
		System.out.println("O valor do gasto trimestral é de: " + gastosTrimestral);
	}
}

Quando eu executo o código dentro do eclipse, ele só aparece os valores referentes a classe Capitulo3, e não aparece o sysout da classe gastosTrimestral.
Vamos supor que eu não queira criar um outro arquivo contendo essa classe, ou seja, quero as 2 classes dentro desse arquivo.
Perguntas:

1 - Porque o sysout da segunda classe não imprime?
2 - Eu devo mudar minha idéia, criando 2 arquivos, contendo cada um uma única classe com um único método main?
3 - Só deve existir um único método main em todo fonte java? Posso ter 2 ou mais métodos main em uma única classe ?

Até onde li no livro do deitel e na própria apostila, um método main é um “método de entrada”. Eu entendo o funcionamento, mas não tive uma clareza concreta sobre isso.

Obs: Ignorem os enormes comentários que fiz durante o código, como estou aprendendo, procuro anotar o máximo de informações, com o intuito de modificar os exercícios posteriormente, criando assim um gama maior de possibilidades de aprendizagem.

Obrigado.

1: Não imprime pois vc tem 2 blocos main no seu codigo, o java busca um e executa, o outro não.
2: pode ser do mesmo jeito q vc esta fazendo, apenas em vez de metodo main vc pode utilizar um construtor…
exemplo:

class gastosTrimestral { public gastosTrimestral() { int gastosJaneiro = 15000; int gastosFevereiro = 23000; int gastosMarco = 17000; int gastosTrimestral; gastosTrimestral = gastosJaneiro + gastosFevereiro + gastosMarco; System.out.println("O valor do gasto trimestral é de: " + gastosTrimestral); } }
3: IDEM ao numero 1

ABS…