java笔记1-5

第一章:初识java

1.1在eclipse建立一个class:

1.new->java project


在这里插入图片描述

2.new->class


在这里插入图片描述

1.2 打印hello word!

package Exp;                      //Exp为包名
public class Na {                 //Na为库名
public static void main(String[] args) {
    System.out.println("hello word");  //String与System都是库
}
}

ps:
1.部分窗口调出:window->show view->console(控制台)
2.先保存,再运行

第三章

3.7运算符与表达式:

在这里插入图片描述

1)算术运算符:

+、-、*、/、%、++、--

  1. /:
    3.0/2 = 1.5(除法运算)
    3 / 2 =1 (整除运算)
  2. ++:
    print(i++) 输出5 i++为表达式的值
    print(++i) 输出6
    表达式的值和变量的值
    口诀:先赋值再相加
    例题
    1.输出整数各个位置上的数字
    2.水仙花数
for(int i = 100;i<1000;i++)
{
    int a = i%10;
    int b = (i/10)%10;
    int c = i/100;
    if(a*a*a+b*b*b+c*c*c == i)
    {
        System.out.println(i);
    }
}

2)关系运算符

<、>、>=、<=、==、!=

3)逻辑运算符

&、|、!、^、&&、||

  1. &为逻辑运算符时,前后为布尔型;为位运算时,前后为整型。
  2. &与&&:逻辑与和简洁与。
  3. |与||:逻辑或和简洁或
  4. <font face="微软雅黑" color=#0066FF size=3> 简洁与逻辑的区别:欠着可能之极端左边的表达式而不计算右边的表达式,而后者必须计算完左右两个表达式。 </font>
    例题:ppt51页

4)位运算符

~ 按位非(not)(一元运算)
& 按位与(AND)
| 按位或(OR)
^ 按位异或(XOR)
>> 右移
>>>0填充右移,左边空出的0填充(二进制100->1000)
<<左移

位运算的某些运算技巧

  1. 异或运算:
    作用一:简单数据加密(穷举法可证)
    如果a^b=c,那么c^b=a以及c^a=b(类似乘法和除法)将b做秘钥,a为原文,c为密文
    作用二:交换两个变量(穷举法可证)
int a = 5,b = 7;
a = a^ b;b = b^ a;a = a^b;
  1. <<左移运算符
    a<<b
    将a各二进制位全部左移b位后得到的值,左移越界丢弃,低位补0。a的值不因运算而改变
    作用:左移一位等于乘以2;可以用来开2的n次方

5)赋值运算符

+=、-=、*=、/=、%=、&=、|=、^=、>>=、<<=、>>>=(a=a>>>b)

  1. 赋值运算符
    格式: 变量或对象 = 表达式
    右边可以连续赋值: a = b = c =8;
  2. 扩展赋值运算符
    在赋值符“=”前加上其他运算符,即构成扩展赋值运算符
    例如:a+=3等价于a=a+3
    例题
    a = 3; a *= 3+5
    24

6)条件运算符(三目运算符)

格式 :<表达式1>?<表达式2:<表达式3>
其中“表达式1”是一个结果为逻辑值的布尔表达式
功能:先计算<表达式1>的值,当<表达式1>的值为true时,则将<表达式2>的值作为整个表达式的值;当<表达式1>的值为 false时,则将<表达式3>的值作为整个表达式的值。
例题:

int a=1,b = 2,max;
max = a>b ? a : b;
System.out.println("max=" + max);

7) 字符串运算符

字符串运算符“+”完成字符串连接操作

8)运算符的优先级

  1. . [] ()
  2. ++ - ! ~ +(正号) -(负号)
  3. new(类型)
  4. / % *
  5. +-(二元)
  6. << >> >>>
  7. < > <= >=
  8. == !=
  9. &
  10. ^
  11. |
  12. &&
  13. ||
  14. ? :
  15. = += -= *= /= %= <<= >>= >>>= &= ^= |=

第四章 流程控制

顺序,分支,循环

4.1语句与复合语句

  1. JAVA不允许在两个嵌套的复合语句内声明两个同名的变量
    public Static void main(String args[])
    {
    int a;
    ......
    int a//错误
    }
  2. 注释
    单行 //
    多行 / * */
    文件/ ** */

4.2 顺序结构

一行一行执行,没有判断和跳转,直到程序结束

4.3 分支结构

1) if条件语句

  1. 两个
int a=1,b=2,c=3,max,min;
if(a>b)
  max=a;
else
  max=b;
  if(c>max) max=c;
System.out.println("Max="+max);
min=a<b ? a : b;
min=c<min ? c : min;
System.out.println("Min="+min);
MAX = 3
MIN = 1
  1. 多个
    if(条件表达式1)
    {
    语句序列 1
    }
    else if(条件表达式 2)
    {
    语句序列 2
    }
    ……
    else
    { }
Scanner sin = new Scanner(System.in);
int sorse = sin.nextInt();
String grade = "A";
        
if(sorse<60) {
    grade = "D";
}
else if (sorse<70)
    grade = "C";
else 
    grade = "B";
System.out.println(grade);

2) switch选择语句

switch (表达式):
{
case 常量表达式1:
语句序列1;
break;
case 常量表达式1:
语句序列1;
break;
}

switch(sorse/10) {
    case 9:   //后面没有任何值,无break。往后执行,直到遇到break
    case 10:grade = "A";
        break;
    case 8:
        if (sorse<85)
            grade = "B";
        else 
            grade = "A";
        break;
    case 7:grade = "C";
        break;
    default:
        grade = "D";
}
System.out.println(grade);

注意

  1. 每个case后面一般都带有break语句。
  2. 圆括号中的“表达式”,是整数型或字符型的量,同时应与各个case后面的常量表达式值得类型相一致。

4.4 循环结构

1)for

for(表达式1;条件表达式;表达式2)
{
循环体
}

for(int i = 1;i <= 10;i++)
{
    sum += i;
}

变形

int i = 1;
for(;;)
{
    if(i>10) break;
    sum += i;
    i++;
}
System.out.println(sum);

2)while循环

while(条件表达式)
{
循环体
}

例题
1 + 2 +……+n
n!

int i = 11;
int sum = 0;
        //直到循环变量的结束值时,一般用for,不知道,一般用while
while(i<=10)
{
    sum += i;
    i++;
}

3)do-while语句

do
{
循环体
}while(条件表达式);
例题:

do 
{
    sum += i;
    i++;
}while(i<=10);//(i>=10)会输出1;(i<=10)会输出55;do-while先做后判断。
System.out.println(sum);

4)foreach语句与数组和集合

int a[] = {1,2,3,4,5,6,7,8};
for(int i:a) 
{    //a中的值给i
    System.out.println(i);
}

5)多重循环

例题:1!+2!+……+n!

int n,sum=0,jc;
Scanner in =new Scanner(System.in);
n=in.nextInt();
for(int i=1;i<=n;i++)
{   
    jc=1;
    for(int j=1;j<=i;j++)
        jc=jc*j;
    sum=sum+jc;
}
System.out.println(sum);

4.5循环语句中的跳转语句

return、break、continue

break:循环,switch
continue:循环

第五章 数组与字符串

java的栈内存和堆内存

  1. 基本类型的变量和对象的引用变量都是在函数的栈内存中分配
  2. 堆内存用于存放有new创建的对象和数组

5.1数组

1)一维数组的声明

格式
类型表示福 数组名[ ]
类型标识符[ ] 数组名

int a[];
int[] a;

注意:[ ]可放在变量名后,也可放在类型名后

2)用new初始化

声明数组时,没有给数组元素分配内存

  1. 先声明数组再初始化
    格式
    数组名 = new 类型标识符[元素个数] (元素个数用整型变量)
int sorce[];
sorce = new int[10];  //分配10个内存
  1. 声明的同时进行初始化
    格式
    类型标识符 数组名[ ] new 类型表舒服[元素个数]
    或者
    类型标识符[ ] 数组名 new 类型表舒服[元素个数]
int scorce[] = new int[10];

2)静态初始化:赋初值初始化数组

在声明数组的同时,给数组元素赋初值
格式:类型标识符 数组名[ ]={初值表}

int scoce[]={65,34,78,81,56,92,56,87,90,77}
在这里插入图片描述

3)数组的长度和下标

  1. 数组的长度
    length
  2. 元素的下标:
    0~数组名 length-1

4)数组的输入及输出

  1. 输入用for循环;遍历输出用foreach
    例题:
    1)
Scanner sin = new Scanner(System.in);
int[] a1;
a1 = new int[5];
for(int i = 0;i<a1.length;i++)//输入用for循环
{
    a1[i] = sin.nextInt();
}
for (int item:a1)//用foreach遍历
{
    System.out.println(item);
}
for(int i = 5;i>=0;i--)
{
    System.out.println(a1[i]);
}

2)对数组进行统计:输入10个非0整数,求他们的平均值,并分别统计这些数中正数和负数的个数

int a[] = new int[10];
Scanner sin = new Scanner(System.in);
int sum = 0,z = 0,f = 0;
for(int i = 0;i<10;i++) {
    a[i] = sin.nextInt();
    sum = sum +a[i];
    if(a[i]>0) z++;
    else  f++;
}
System.out.println(sum);
System.out.println(z);
System.out.println(f);

3)求最大值和第二大值

int max = a[0];
int min = a[1];
if(min>max)
{
    max = a[1];min = a[0];
}
for(int i = 2;i<n;i++)
{
    if(a[i]>max) {
        min = max;
        max = a[i];
    }
    else if(a[i]>min)//a[i]<max
    {
        min =a[i];
    }
System.out.println(max);//最大值
System.out.println(min);//第二大
}

4)输入n个整数,找出最大数

if(a[i]>max) max = a[i];

5)找出最大值下标

if(a[index]<a[i]) index = i;

5.2二维数组

格式:类型标识符 数组名[ ][ ] 或者类型名[ ] [ ] 数组名
例如:int a[ ] [ ];或者int [ ] [ ] a;

1)二维数组的初始化

  1. 用new初始化
    1)先声明再初始化
    数组名 = new 类型标识符 [行数] [列数]
    例如:int a[ ][ ];或者a = new int [3][4];
    2)生命的同时进行初始化
    类型标识符 数组名[ ] [ ] = new 类型标识符 [行数] [列数]
    类型标识符[ ] [ ] 数组名 = new 类型标识符 [行数] [列数]
    例如:int a [ ] [ ] = new int [3][4]

2)二维数组的行数和列数

int a[ ][ ] = new int [3][4];
行数:a.length 3
列数:
第 i 行:a[i].length 4

Scanner sin = new Scanner(System.in);
int a[][] = new int[3][];   //输入9个
//a[0],a[1],a[2]
a[0] = new int[2];
a[1] = new int[4];
a[2] = new int[3];
        
for(int i = 0;i<a.length;i++) //输入数组
{
    for(int j=0;j<a[i].length;j++)
    {
        a[i][j]=sin.nextInt();
    }
}
        
for(int[] a1:a)  //输出数组
{
    for(int item:a1)
    {
        System.out.print(item+" ");
    }
    System.out.println();
}
在这里插入图片描述

3)赋初值初始化二维数组

类型标识符 数组名 [ ] [ ] ={{初值表},{初值表}……,{初值表}};
例如:
int a [ ] [ ] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

4)二维数组的输入和输出

输入:

Scanner sin = new Scanner(System.in);
int a[][] = new int [2][3],i,j;
for(i=0;i<2;i++)    //i<a.length
{
    for(j=0;j<3;j++)  //j<a[i].length
    {
        a[i][j]=sin.nextInt();
    }
}

输出

for(i=0;i<2;i++)
    for(j=0;j<3;j++)
        System.out.print(a[i][j]);
    System.out.println;

5.3 字符串

1)字符串变量的创建

  1. String<变量名>;
    <变量名>=new String("字符串");
    例如:
String s;
s = new String("Hello");
  1. String <变量名>=new String("字符串");
  2. String<变量名> = " 字符串 "

2) String类的常用方法

调用java定义的格式
<字符串变量名>.<方法名>


在这里插入图片描述
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容