Outils pour utilisateurs

Outils du site


lang:java:variable

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lang:java:variable [2020/02/11 23:59] – réation avec "Type primitif" rootlang:java:variable [2023/04/11 09:28] (Version actuelle) – [Pointeur sur la méthode d'une classe] : précision sur les types permettant de stocker des pointeurs sur fonction root
Ligne 1: Ligne 1:
 +====POO====
 ===Type primitif=== ===Type primitif===
  
Ligne 5: Ligne 6:
   * Caractère : ''char''   * Caractère : ''char''
  
-  * Nombre entier : ''byte'', ''short'', ''int'', ''long''+  * Nombre entier : ''byte'', ''short'', ''int'', ''long''. Il n'existe pas de type non signé.
  
   * Nombre à virgule : ''float'', ''double''   * Nombre à virgule : ''float'', ''double''
Ligne 11: Ligne 12:
 [[http://imss-www.upmf-grenoble.fr/prevert/Prog/Java/CoursJava/TypeDeDonneePrimitifs.html|Types de donnée primitifs]] {{ :lang:java:variable:cours_java_types_de_donnee_primitifs_2020-02-11_23_58_01_.html |Archive le 11/02/2020}} [[http://imss-www.upmf-grenoble.fr/prevert/Prog/Java/CoursJava/TypeDeDonneePrimitifs.html|Types de donnée primitifs]] {{ :lang:java:variable:cours_java_types_de_donnee_primitifs_2020-02-11_23_58_01_.html |Archive le 11/02/2020}}
  
 +===Pointeur sur la méthode d'une classe===
 +
 +On passe par un foncteur :
 +
 +<code java>
 +import java.util.function.Function;
 +
 +public class Test {
 +  public Boolean f() {
 +    System.out.println("Fonction");
 +    return true;
 +  }
 +}
 +
 +Function<Test, Boolean> f = Test::f;
 +Test t = new Test();
 +f.apply(t);
 +</code>
 +
 +Liste des types permettant de stocker des pointeurs sur fonction :
 +
 +<code>
 +Supplier       ()    -> x
 +Consumer           -> ()
 +BiConsumer     x, y  -> ()
 +Callable       ()    -> x throws ex
 +Runnable       ()    -> ()
 +Function           -> y
 +BiFunction     x,  -> z
 +Predicate      x     -> boolean
 +UnaryOperator  x1    -> x2
 +BinaryOperator x1,x2 -> x3
 +</code>
 +
 +[[https://stackoverflow.com/questions/29945627/java-8-lambda-void-argument|Java 8 lambda Void argument]] {{ :lang:java:variable:java_8_lambda_void_argument_-_stack_overflow_11_04_2023_08_28_43_.html |Archive du 29/04/2015 le 11/04/2023}}
 +
 +Et pour une fonction qui a plus de 2 paramètres, il faut le définir soit même.
 +
 +<code java>
 +@FunctionalInterface
 +interface Function6<One, Two, Three, Four, Five, Six> {
 +  public Six apply(One one, Two two, Three three, Four four, Five five);
 +}
 +</code>
 +
 +[[https://stackoverflow.com/questions/27872387/can-a-java-lambda-have-more-than-1-parameter|Can a java lambda have more than 1 parameter?]] {{ :lang:java:variable:can_a_java_lambda_have_more_than_1_parameter_-_stack_overflow_11_04_2023_08_28_54_.html |Archive du 10/01/2015 le 11/04/2023}}
 ===Passage en copie ou référence=== ===Passage en copie ou référence===
  
 Quand une variable est passé en paramètre, elle est copié si c'est un type primitif, elle est passé en référence sinon. Quand une variable est passé en paramètre, elle est copié si c'est un type primitif, elle est passé en référence sinon.
 +
 +====Programmation fonctionelle===
 +
 +===Initialisation complexe d'une variable constante===
 +
 +Plutôt que
 +
 +<code java>
 +String str;
 +if (i == 1)
 +  str = "un";
 +else if (i == 2)
 +  str = "deux";
 +else
 +  str = "trois";
 +</code>
 +
 +écrire
 +
 +<code java>
 +Function<Integer, String> strLambdb = ii -> {
 +  if (i == 1)
 +    return "un";
 +  else if (i == 2)
 +    return "deux";
 +  else
 +    return "trois";
 +};
 +final String str = strLambdb.apply(i);
 +</code>
 +
 +Ce n'est pas encore le style d'écriture parfait mais ça permet de mettre la variable ''final''.
 +
 +
lang/java/variable.1581461976.txt.gz · Dernière modification : de root