Neste
artigo vou apresentar uma comparação dos principais recursos das linguagens C#
e Java.
|
A comparação refere-se aos principais recursos, sem levar em conta os novos recursos da linguagem C# ( versões C# 6.0 e C# 7.0) que simplificaram a sintaxe em muitos casos.
Estrutura do Programa |
|
using System;
namespace Ola {
public class OlaMundo {
public static void Main(string[] args) {
string nome = "C#";
// ve se um argumento foi passado da
//linha de comando
if (args.Length == 1)
name = args[0];
Console.WriteLine("olá, " + nome + "!");
}
}
}
|
package Ola;
public class OlaMundo {
public static void main(String[] args) {
String nome = "Java";
// ve se um argumento foi passado da linha
// de comando
if (args.length == 1)
name = args[0];
System.out.println("Ola, " + nome + "!");
}
}
|
Comentários |
|
// Linha simples /* Multiplas linhas */ /// XML comentários em uma linha simples /** XML comentário em múltiplas linhas */ |
// Linha Simples /* Multiplas linhas */ /** comentário de documentação Javadoc */ |
Tipos de Dados |
|
Tipos por valor bool byte, sbyte char short, ushort, int, uint, long, ulong float, double, decimal structures, enumerations
Tipos por
referência Conversões // int para string
// string para int // double para int
|
Tipos primitivos boolean byte char short, int, long float, double
Conversões // int para String // String para int // double para int
|
Constantes |
|
const
double PI = 3.14;
// Pode ser
definido para uma constante ou variável. |
//
Pode ser inicializada em um construtor final double PI = 3.14; |
Enumerações |
|
enum
Action { Start, Stop, Rewind,
Forward }; enum Status { Flunk = 50, Pass = 70, Excel = 90 };
Status s = Status.Pass; |
enum
Action {Start, Stop, Rewind,
Forward}; // Tipo especial de classe
Action a = Action.Stop; |
Operadores |
|
Comparação == < > <= >= !=
Aritméticos
Atribuição
Bitwise
Logicos Nota: && e || realização avaliação lógica de curto-circuito
Concatenação de strings |
Comparação == < > <= >= !=
Aritméticos
Atribuição
Bitwise
Logicos Nota: && e || realizam avaliações lógica de curto-circuito
Concatenação de strings
|
Estrutura de decisão |
|
saudacao = idade < 20 ? "O que
há de novo ?"
: "Ola"; if
(x < y) if (x != 100) {
|
saudacao = idade < 20 ? "O que
há de novo ?"
: "Ola"; if (x < y) if (x != 100) { int selecao = 2;
|
Laços (Loop) |
|
while (i < 10) i++; for (i = 2; i <= 10; i += 2) Console.WriteLine(i); do foreach (int i in numArray) // foreach pode ser usado para iterar sobre
qualquer coleção
|
while (i < 10) i++; for (i = 2; i <= 10; i += 2) System.out.println(i); do for
(int i : numArray)
//
foreach // for - pode ser usado
para iterar sobre qualquer coleção
|
Arrays |
|
int[] numeros = {1, 2, 3}; for (int i = 0; i < numeros.Length; i++) Console.WriteLine(numeros[i]); string[] nomes = new string[5]; names[0] = "Macoratti"; float[,] DuasDimensoes= new float[rows, cols]; DuasDimensoes[2,0] = 4.5f;
int[][] jagged = new int[3][] { new int[5], new int[2], new int[3] };
|
int numeros[] = {1, 2, 3};
ou int[] numeros =
{1, 2, 3}; for (int i = 0; i < numeros.length; i++) System.out.println(numeros[i]); String nomes[] = new String[5]; nomes[0] = "Macoratti"; float DuasDimensoes[][] = new float[rows][cols]; DuasDimensoes[2][0] = 4.5;
int[][] jagged = new int[5][]; |
Funções |
|||||
// Passado por valor (default), in/out-reference (ref),
and out-reference (out) class Point { Point p1 = new Point(); // Aceita um número variável de argumentos int total = Soma(4, 3, 2, 1); // retorna 10
|
// Tipos Primitivos e por referência são sempre
passados por valor class Point { Point p = new Point(); int total = Soma(4, 3, 2, 1); // retorna 10
|
Strings |
|
//
Concatenação de String string escola = "de Campinas "; escola = escola + "Universidade"; // escola => "Universidade de Campinas" //
Comparação de Strings Console.WriteLine(mascote.Substring(2, 3)); // Imprime "val" // Meu aniversario: Oct 12, 1973 // string mutável
|
//
Concatenação de String String escola = "de Campinas "; escola = escola + "Universidade"; // escola => "Universidade de Campinas" //
Comparação de Strings System.out.println(mascote.substring(2,3)); // Imprime "val" // Meu aniversario: Oct 12, 1973 // string mutável
|
Tratamento de Exceção |
|
Exception up = new Exception("Alguma coisa esta
errada.");
throw up;
|
// Precisa estar no método
que é declarada para lançar esta exceção Exception ex = new Exception("Alguma coisa esta errada."); throw ex; try {
|
Namespaces |
|
namespace
Macoratti.Sistema.Artigos { ... } ou namespace
Macoratti { // Importa uma única
classe // Importa todas as
classes
|
package Macoratti.Sistema.Artigos; |
Classes e Interface |
|
palavras chaves para
acessabilidade e escopo public private internal protected protected internal static // herança // Definição de Interface // Estendendo uma interface // Implementação de Interface
|
palavras chaves para
acessabilidade e escopo public private protected static // herança // Definição de Interface // Estendendo uma interface // Implementação de Interface
|
Objetos |
|
SuperHero heroi = new SuperHeroi(); heroi.Name = "HomeMosca"; heroi.PowerLevel = 3;
heroi.Defend("Laura Jones"); SuperHeroi heroi2 = heroi;
// Ambos referem-se ao mesmo objeto heroi = null ; // Libera o objeto if (heroi ==
null) Object obj = new SuperHeroi();
|
SuperHeroi heroi = new SuperHeroi();
heroi.setName("HomeMosca"); SuperHeroi heroi2 = hero;
//
Ambos referem-se ao mesmo objeto if (heroi ==
null) Object obj = new SuperHeroi();
|
Propriedades |
|
private int mTamanho;
public int
Tamanho{ sapato.Tamanho++; //incrementa valor da propriedade
|
private int mTamanho;
public int
getTamanho()
{ return mTamanho; }
|
Structs |
|
struct AlunoRegistro { public string nome; public float gpa; public AlunoRegistro(string nome, float gpa) { this.nome = nome; this.gpa = gpa; } } AlunoRegistro stu = new AlunoRegistro("Macoratti", 3.5f); AlunoRegistro stu2 = stu; stu2.name = "Miriam"; Console.WriteLine(stu.nome); // Imprime "Macoratti" Console.WriteLine(stu2.nome); // Imprime "Miriam" |
Sem suporte a Structs |
Console I/O |
|
Console.Write("Qual o seu nome? "); string nome = Console.ReadLine(); Console.Write("Qual a sua idade? "); int idade = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("{0} tem {1} anos de idade.", nome, idade); // ou Console.WriteLine(nome + " tem " + idade + " anos de idade."); int c = Console.Read();
// Lé um único char // O estúdio custa
R$499.00 por 3 meses // Hoje é 06/02/2017
|
java.io.DataInput in = new java.io.DataInputStream(System.in); System.out.print("Qual o seu nome? "); String nome = in.readLine(); System.out.print("Qual a sua idade? "); int idade = Integer.parseInt(in.readLine()); System.out.println(nome + " tem " + idade + " anos de idade.");
// O studio custa $499.00 por 3 meses // Hoje é 06/25/04
|
File I/O |
|
using System.IO;
// Escrita de Caractere
Stream //Leitura de Caractere
Stream
// Leitura Binaria
Stream |
import java.io.*; //
Escrita de Caractere Stream // Leitura de
Caractere Stream // Escrita Binaria
Stream // Leitura Binaria
Stream |
Veja nas outras referências outros artigos que comparam a plataforma .NET e a plataforma Java.
"Porque as suas coisas invisíveis, desde
a criação do mundo, tanto o seu eterno poder, como a sua divindade, se entendem,
e claramente se vêem pelas coisas que estão criadas, para que eles fiquem
inescusáveis"
Romanos 1:20
Referências: