JAVASE知識点4:方法(いくつかの一般的なクラスの方法を含む)、break、forサイクルとその変体、foreach、および練習
11215 ワード
public class B {
public static void f(int a,char c)
{
System.out.println(a+" "+c);
}
public static void main(String[] args) {
f(1,97);// ,97 。 byte short char int long float double
}
}
package day3_1;
public class B {
public static void main(String[] args) {
char a=97;
System.out.println(a);
}
}
:a
1つの方法:
1クラスのメソッドのフォーマット:
アクセス権修飾子その他の修飾子戻り値タイプ関数名(パラメータリスト)
{
メソッドボディ;
}
2完全な関数は宣言部分と実装部分を含む
3役割ドメイン:
アクセス権修飾子(ここでは2つのみ):public,default[アクセス権修飾子を追加していない場合は、デフォルトのアクセス権defaultです.注意:defaultは表示する必要はありません.]
public修飾の変数、メソッド、クラスは、どこでも呼び出すことができます
デフォルトのパーミッション修飾の変数、メソッド、クラス、同じパケットの下でのみ呼び出されます.
静的メソッドは、静的メソッドと静的変数を直接呼び出すことができます.
静的メソッドでは、非静的メソッドと非静的変数を直接呼び出すことはできません.
非静的メソッドは、静的メソッドと静的変数を直接呼び出すことができます.
非静的メソッドは、非静的メソッドと非静的変数を直接呼び出すことができます.
静的メソッドまたは変数が同じメモリ領域にある
4 1つの関数で1つの関数を呼び出すことができますが、1つの関数で1つの関数を宣言することはできません.
5 int x=1,y=2;//実参
for(int a,int b);//パラメータ
f(x,y);//呼び出し関数、実パラメータに値を割り当てる
6戻り値voidの関数にreturnを書くことができます.メソッド全体を終了するために使用します.
returnは関数に1つの値しか返さない
7カスタム関数に戻り値があり、メソッドで分岐構造に遭遇した場合、各分岐の後ろにreturnが表示される必要があります.
: , return,
// : , , ok
//
if(num1 > num2) {
return num1;
}
// ,
return 0;
8関数パラメータテーブルは...(3点)は配列を表しますが、変数はパラメータテーブルの最後に配置する必要があります.
...パラメータと通常の配列をパラメータとして区別する
// int...a a
// ,
// : ... ,
public class Test {
// int...
static void f(int a,int... b)
{
System.out.println(a);
for(int i:b)// b
{
System.out.print(i+" ");
}
System.out.println();
System.out.println(b.length);// b
System.out.println();
}
// int[]
static void g(int a,int[] b)
{
System.out.println(a);
for(int i:b)
{
System.out.print(i+" ");
}
System.out.println();
System.out.println(b.length);
System.out.println();
}
public static void main(String[] args) {
f(0,1,2,3,4,5,6,7,8,9,10);// int... , ( )
int[] b=new int[] {0,2,3,4,5,6,7,8,9,10};
g(10,b);// int[] , ( , )
}
}
例:
package day3_1;
public class A {
static void f(char a,int...b)
{
for(int i:b)
{
System.out.print(i+" ");
}
System.out.println();
System.out.print(b.length);
}
public static void main(String[] args) {
f('a',2,3,4,5,6,7);
}
}
出力:2 3 4 5 6 6
package day3_1;
public class A {
static void f(char a,String...b)
{
for(String i:b)
{
System.out.print(i+" ");
}
System.out.println();
System.out.println(b.length);
System.out.println(b[0].length());
}
public static void main(String[] args) {
f('a',"Hello ","World");
}
}
出力:
Hello World 2 6
9 public static void main(String[]args){}
まずプログラムはmain()メソッドを自動的に呼び出しますが、なぜpublicとstaticですか?
publicは誰でも呼び出すことができ、staticはmain()が共有領域にあることを示し、プログラムはまず共有領域でこの方法を探し、見つけたら実行します.
10メソッドのリロード
メソッドのリロードは、メソッドの修飾子と戻り値とは何の関係もありません.
リロード関数の場合、どの関数が呼び出されるかは、伝達されたパラメータに依存します.
同じクラスにおいて、以下の条件を満たす場合、これらのメソッド間で互いにa.メソッド名が同じb.パラメータが異なる(数が異なる、またはタイプが異なる、または順序が異なる)c.アクセス権修飾子と戻り値タイプは影響しない
class TextDemo04
{
public static void main(String[] args)
{
// , ,
Check.show("10");
Check.show("10",10);
}
}
//
/*
, ,
a.
b. 【 】
c.
*/
class Check
{
public static void show() {
System.out.println(" show");
}
//1.
public static void show(int a) {
System.out.println("int show");
}
public static void show(String a) {
System.out.println("String show");
}
public static void show(String a,int b) {
System.out.println("String int show");
}
//2. :
// , , ,
/*
public static String show() {
System.out.println("String show");
return "abc";
}
*/
//3.
// , , ,
/*
static void show() {
System.out.println("show");
}
*/
}
11再帰アルゴリズム
1つのメソッドのメソッド内でその関数自体を呼び出し、関数の再帰と呼ぶ
メソッドの再帰には、あるセグメントのコードを繰り返し実行する暗黙的なループが含まれていますが、この繰り返しはループ文を使用して制御する必要はありません.
class DiGuiUsageDemo01
{
public static void main(String[] args)
{
/*
1,2,3,4,5,6, 7, 8, 9,10,11,.....
1,1,2,3,5,8,13,21,34,55,89....
:
1. , 1
2. n = n - 1 + n - 2
fun(1) = 1
fun(2) = 1
fun(3) = fun(2) + fun(1) = 1 + 1
fun(4) = fun(3) + fun(2) = fun(2) + fun(1) +fun(2)
fun(5) = fun(4) + fun(3) = fun(3) + fun(2) + fun(2) + fun(1) = fun(2) + fun(1) + fun(2) + fun(2) + fun(1)
....
fun(n) = fun(n - 1) + fun(n -2)
*/
int result1 = fun(10);
System.out.println(result1);
}
// : ,
public static int fun(int n) {
if(n == 1 || n == 2)
return 1;
else
return fun(n - 1)+fun(n -2);
}
}
}
Thinking in JAVA:
import java.util.*;//Date java.util
public class A {
public static void main(String[] args)
{
System.out.println(new Date());// Date ,
}
}
出力:Sun Jul 22 10:33:58 CST 2018
2.Math.round()/四捨五入
3 Characterクラスのstatic isLowerCase(charまたはint)メソッドは、小文字かどうかを判断するために使用されます.例:
public static void main(String[] args)
{
for(int i=0;i<=128;i++)
{
if(Character.isLowerCase(i))
{
System.out.println((char)i);
}
}
}
}
出力:a b cd e f g h i j k l mn o p q r s t u v w x y z
4 foreach構文:int変数をカウントする必要がなく、新しいより簡潔なfor構文は配列とコンテナに使用され、foreachは自動的に各項目を生成します.
foreachも強化forになります
例:float配列を巡る
import java.util.*;
public class Test {
public static void main(String[] args) {
Random rand=new Random(47);
float[] f=new float[10];
for(int i=0;i<=9;i++)
f[i]=rand.nextFloat();
for(float x:f)
System.out.println(x);
}
}
出力:0.72711575 0.39982635 0.5309454 0.0534210.16020656 0.57799757 0.18847865 0.4170137 0.51660204 0.73734957
配列を返す方法は、foreachを使用することができます.たとえば、Stringクラスには、char配列を返す方法toCharArray()があります.そのため、文字列内のすべての文字を簡単に反復することができます.
public class Test {
public static void main(String[] args) {
for(char c:"An African Snallow".toCharArray())
{
System.out.print(c);
}
System.out.println();
}
}
出力:An African Snallow
break,continue
break文
機能:
ある循環体から飛び出す
書く場所:
ループまたは選択構造内に表示する必要があります
for(int i=0; i<10; i++) {
if(i>5) {
break;
}
System.out.println(“ Java”+i);
}
continue文
public class ContinueDemo{
public static void main(String[] args){
for(int i = 0 ; i < 10 ; i++)
{
if(i%2==0){
continue;
}
System.out.println(i);
}
}
}// 0-9
for(式1;式2;式3)
{
式4
}
実行順序:
1回目:式1、式2、式4、式3
式2、式4、式3
二変体(自分でコードを書くときは正規の方法で書くことに注意してください.ここで変体はただ理解しています:)
1.実行順序により
for(式1;式2;)
{
式4
式3
}
2.実行順序により
for(式1;;)
{
if(式2){
式4
式3
}
else
break;
}
3行に置くことができます
for(式1;式2;式3,式4);//すなわち、式4の論理が比較的少ない場合に式3に配置し、カンマで区切られていることに注意して演算することができる.
4.for(int i=1,j=1,w=2;i<10;i++,j++,w+)/式1は複数の同じタイプの変数であってもよく、式2は1つの判断文のみであり、式3は1つの式であってもよい
{
}
public class A {
public static void main(String[] args) {
for(int i=1;i<=10;i++,System.out.println(i));
}
}
:
2
3
4
5
6
7
8
9
10
11
package day3_1;
// 0-9
public class A {
public static void main(String[] args) {
for(int i=1;i<=10;i++)
{
System.out.print(i+" ");
}
System.out.println("");
for(int j=1;j<=10;)
{
System.out.print(j+" ");
j++;
}
System.out.println("");
for(int k=1;;)
{
if(k<=10) {
System.out.print(k+" ");
k++;
}
else
break;
}
System.out.println("");
for(int w=1;w<=10;w++,System.out.print(w+" "));
System.out.println("");
for(int r=1;r<=10;System.out.print(r+" "),r++);
System.out.println("");
}
}
出力:1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 6 7 8 9 10 2 3 4 4 4 4 4 4 5 6 7 7 8 8 8 9 11 1 2 3 4 5 8 10
文字列のアルファベット、数値、下線、スペース、その他の文字の個数をそれぞれ計算する方法を書きます.
/*1. , , , , */
/* Character.isLetter();//
Character.isWhitespace();//
Character.isDigit();// */
public class A {
public static void main(String[] args) {
String s="abcd AB CD EF ..!@#$%^&*()_+=-1235346457680980{}[]\\\';/.,<>? ";
int digit=0,letter=0,space=0,special=0;
for(int i=0;i<=s.length()-1;i++)
{
char c=s.charAt(i);
if(Character.isLetter(c))//
letter++;
else if(Character.isDigit(c))//
digit++;
else if(Character.isWhitespace(c))
space++;
else
special++;
}
System.out.println(" "+letter+" ");
System.out.println(" "+digit+" ");
System.out.println(" "+space+" ");
System.out.println(" "+special+" ");
}
}
:
10
16
6
29
最大の公倍数と最小の公約数を求めます
... , : * = , :
package day3_1;
import java.util.*;
/4. m n, /
public class B {
public static void main(String[] args) {
System.out.print(" ");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int gb,gy;
if(a>b)// a
{
int tmp =a;
a=b;
b=tmp;
}
for(int i=a;i>=1;i--)
{
if(a%i==0 && b%i==0)
{
gy=i;
gb=a*b/gy;
System.out.println(" "+gy+" "+gb);
break;
}
}
}
}
:
// ... = =
package day3_1;
import java.util.*;
/4. m n, /
public class B {
public static void main(String[] args) {
System.out.print(" ");
Scanner sc=new Scanner(System.in);
int a1=sc.nextInt();
int b1=sc.nextInt();
int r=1;
int a=a1,b=b1;
if(a