Olá, no código abaixo, eu apenas coloquei o this no atributo tamanho porque tem um parâmetro com o mesmo nome que ele, para que o compilador não se confunda. Mas estou na dúvida se coloco nos outros também.
Eu sempre vejo meus professores referenciando todos os atributos da classe, em todos os métodos, com o this, independente se houver ou não uma variável local com mesmo nome que possa fazer o compilador entender errado. Se não há esse tipo de variável, o compilador já não entende que esses atributos são referentes aos da classe sem o uso do this?
Eu quero entender principalmente como funciona o compilador na hora de ler esse código.
Se pra ele fica melhor usar o this mesmo sem nada que possa o confundir ou não.
Caso vocês tenham algum material bom sobre esse tipo de assunto, estou aceitando indicações
publicclassPilha{privateinttamanho;privatejava.lang.Object[]vetor;privateinttopo;publicPilha(int);Code:0:aload_01:invokespecial#13// Method java/lang/Object."<init>":()V4:aload_05:iload_16:putfield#16// Field tamanho:I9:aload_010:aload_011:getfield#16// Field tamanho:I14:anewarray#3// class java/lang/Object17:putfield#18// Field vetor:[Ljava/lang/Object;20:aload_021:iconst_m122:putfield#20// Field topo:I25:returnLineNumberTable:line8:0line9:4line10:9line11:20line12:25LocalVariableTable:StartLengthSlotNameSignature0260thisLsample/Pilha;0261tamanhoI}
publicclassPilha{privateinttamanho;privatejava.lang.Object[]vetor;privateinttopo;publicPilha(int);Code:0:aload_01:invokespecial#13// Method java/lang/Object."<init>":()V4:aload_05:iload_16:putfield#16// Field tamanho:I9:aload_010:aload_011:getfield#16// Field tamanho:I14:anewarray#3// class java/lang/Object17:putfield#18// Field vetor:[Ljava/lang/Object;20:aload_021:iconst_m122:putfield#20// Field topo:I25:returnLineNumberTable:line8:0line9:4line10:9line11:20line12:25LocalVariableTable:StartLengthSlotNameSignature0260thisLsample/Pilha;0261paramTamanhoI}
Observa-se que, neste exemplo, não houve diferença nas instruções geradas no bytecode.