Java随笔1

1.变量与运算符

命名规则
由26个英文字母大小写,0—9,或$组成数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
基本数据类型
整型: byte \ short \ int \ long
浮点型:float \ double
字符型:char
布尔型:boolean
较大值比较
public class test {
    public static void main(String[] args) {
        int m1 = 10;
        int m2 = 30;
        int max1 = (m1>m2)?m1:m2;
        System.out.println("m1与m2较大值为"+ max1);
    }
}
String类
String:字符串。使用一对""表示,内部包含0个、1个或多个字符。
String与8种基本数据类型变量间的运算:+。
运算的结果还是String类型。
int num1 = 10;
boolean b1 = true;
String str4 = "hello";
String str5 = str4 + b1;
String str6 = str4 + b1 + num1;
System.out.println(str5);
System.out.println(str6);
输出结果:
 hellotrue
 hellotrue10
进制
二进制(以OB、 ob开头)、十进制、八进制(以0开头)、十六进制(以0x或0x开头)的声明方式。
打印位数
int num = 153;
int ge = num % 10; //个位
int shi = num / 10 % 10; //十位.
int bai = num / 100;
System.out.println("个位是: " + ge);
System.out.println("十位是: " + shi);
System.out.println("百位是: " + bai);

2.流程控制

顺序结构
分支语句if-else
if(条件表达式){
语句块1;
}else {
语句块2;
}
int heartBeats =101;
if (60<= heartBeats &&heartBeats <=100){
    System.out.println("你身体很健康");}
else{
    System.out.println("你需要进一步检查");
}}}
注: if (60<= heartBeats<=100) 错误
int num=43;
if (num%2==0){
   System.out.println(num+"是偶数");
}
else{
   System.out.println(num+"是奇数");
}
int x= 4;
int y = 1;
if (x > 2) {
    if (y > 2)
         System.out.println(x + y);
         System.out.println("atguigu");
} else
         System.out.println("x is "+ x);
输出结果:atguigu
选择switch-case
public class test4 {
    public static void main(String[] args) {
        Scanner scan =new Scanner(System.in);
        int num = scan.nextInt();
        switch(num){
            case 0:
                System.out.println("zero");
            case 1:
                System.out.println("one");
            case 2:
                System.out.println("two");
    }
}}
switch(score / 10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
   System.out.println(“不及格”);
   break;
case 6:
case 7:
case 8:
case 9:
case 10:
   System.out.println("及格"); 
   break;
default:
   System.out.println(“成绩输入有误”);
   break;
循环结构
public static void main(String[] args) {
        for (int i=0;i<=10;i++){
            System.out.println("Helloword");
}}
int num = 1;
for(System.out.print("a") ;num < 3; System.out.print("c"),num++)
System.out.print("b");
输出结果:abcbc    执行顺序:124324324
遍历1—100以内的偶数,并获取偶数的个数,获取所有的偶数的和
int count=0;
int sum=0;
for (int i=1;i<=100;i++){
    if (i%2==0){
       System.out.println(i);
       count++;
       sum=sum+i;
}
     System.out.println(count);
     System.out.println(sum);}
水仙花数
for (int i=100;i<=999;i++){
  int ge=i%10;
  int shi=i/10%10;
  int bai=i/100;
  if (i==ge*ge*ge+shi*shi*shi+bai*bai*bai){
       System.out.println(i);
}}  输出:153 370 371 407
最大公约数 最小公倍数
Scanner scan  =new Scanner(System.in);
        System.out.print("请输入第一个数:");
        int m = scan.nextInt();
        System.out.print("请输入第二个数:");
        int n = scan.nextInt();
        //最大公约数
        int min=(m<n)?m:n;
        for(int i = min;i >= 1;i--){
            if(m%i== 0 && n%i== 0) {
                System.out.println("最大公约数为:"+i);
                break;//一旦执行,就跳出当
            }}
        //最小公倍数
        int max=(m>n)?m:n;
        for (int i=max;i<=m*n;i++){
            if (i%m==0&&i%n==0){
                System.out.println("最小公倍数为:"+i);
                break;//一旦执行,就跳出当
            }
        }
while语句
int i=1;
while (i<=10){
    System.out.println("我的世界");
    i++;
}

for循环和while循环的小区别:初始化条件的作用域范围不同。while循环中的初始化条件在while循环结束后,依然有效。

//随机生成一个100以内的数,猜这个随机数是多少?
//从键盘输入数,如果大了,提示大了;如果小了,提示小了;如果对了,就不再猜了,并统计一共猜了多少次。
int random= (int)(Math.random()*100)+1;
Scanner scan =new Scanner(System.in);
System.out.println("请输入一个100内的一个整数:");
int guess=scan.nextInt();
int guessCount =1;
while (random!=guess){
   if (guess>random){
        System.out.println("你输入的数据偏大了");
       }
   else if (guess<random){
        System.out.println("你输入的数据偏小了");
       }
   System.out.println("请输入一个100内的一个整数:");
   guess=scan.nextInt();
   guessCount++;
  }//能结束循环 意味着相等了
System.out.println("恭喜你猜对了");
System.out.println("您一共猜了"+guessCount+"次!");
scan.close(); 
        double paper =0.1;
        double zf =8848860;
        int count = 0;
        while (paper<=zf){
            paper=paper*2;
            count++;
        }
        System.out.println(paper/1000+"折叠次数为"+count);
do-while

71664291584

无限循环:最简单“无限”循环格式: while(true),for(;;)

随机数
需求:获取一个[a,b]范围的随机整数
(int)(Math.random()*(b - a + 1)+a)
Scanner
导包 import java.util.Scanner
提供(或创建)一个Scanner类的实例
调用Scanner类中的方法,获取指定类型的变量
关闭资源,调用Scanner类的close()

键盘输入代码的四个步骤:
1.导包:import java.util.Scanner;
2.创建Scanner类型的对象: Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法(next()/nextXxx() 来获取指定类型的变量
4.释放资源: scan.close()
import java.util.Scanner;
public class test3 {
    public static void main(String[] args) {
        Scanner scan  =new Scanner(System.in);  //调用一次即可
        System.out.println("欢迎光临交友网");
        System.out.print("请输入你的网名:");
        String name = scan.next();
        System.out.print("请输入你的年龄:");
        int age = scan.nextInt();
        System.out.print("请输入你的体重:");
        double weight =scan.nextDouble();
        System.out.print("你是否单身(单身:true;不单身:false):");
        boolean isSingle =scan.nextBoolean();
        System.out.print("请输入你的性别:(男/女)");
        char gender = scan.next().charAt(0);
        System.out.println("网名: " + name + ",年龄: " + age + ",体重: " + weight + ",是否单身: " + isSingle +
                ",性别:" + gender);
        System.out.println("注册完成,欢迎继续进入体验!");
        scan.close();
}}
IDEA

71671723588

3.数组

4.面向对象

①基础

赋值传参
地址传参
引用传参
面向对象
构造函数:初始化函数
析构函数:销毁调用的函数
复合数据:存在对于其他复合数据的引用的

面向过程:过程就是操作数据的步骤。如果某个过程的实现代码重复出现,那么就可以把这个过程抽取为一个函数。这样就可以大大简化冗余代码,便于维护。 C语言

面向对象:在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,用类来表示。 Java python

类的内部成员一、二:
成员之一:属性、成员变量、field (字段、域)
成员之二:(成员)方法、函数、method 参考简历

属性
定义变量 :    数据类型 变量名 = 变量值
调用格式 :    “对象.属性”或“对象.方法”
    public static void main(String[] args) {
         Phone p1 =new Phone();
         p1.name = "lianjunxian";
         p1.price =400;
         System.out.println("名字是"+p1.name);
         System.out.println("名字是"+p1.price);
         p1.call();
         p1.sendMessage("dffds");
         p1.playGame();
    }

面向对象完成具体功能的操作的三步流程

步骤1:创建类,并设计类的内部成员(属性、方法)
步骤2:创建类的对象。比如: Phone p1= new Phone();
步骤3:通过对象,调用其内部声明的属性或方法,完成相关的功能
类的实例化
等价描述:类的实例化 <=> 创建类的对象 <=> 创建类的实例
格式:类类型 对象名 = 通过new创建的对象实体
举例:
Phone p1 = new Phone();
Scanner scan = new Scanner(System.in); 
String str = new String();
对象内存解析
栈(stack):方法内定义的变量,存储在栈中。
堆(heap) :new 出来的结构(比如:对象的实体)。包括对象中的属性
方法区(method area) :存放类的模板,比如:Person类的模板

注:
Person p1 = new Person();
Person p3 = p1;
说明:此时的p1, p3两个变量指向了堆空间中的同一个对象实体。(或p1,p3保存的地址值相同)如果通过其中某一个对象变量修改对象的属性时,会影响另一个对象变量此属性的值。


成员vs局部
不同点:
①类中声明的位置的不同:
   属性:声明在类内,方法外的变量
   局部变量:声明方法、构造器内部的变量
②在内存中分配的位置不同(难) :
   属性:随着对象的创建,存储在堆空间中。
   局部变量:存储在栈空间中
③是否可以有权限修饰符进行修饰:
    权限修饰符: public、 protected、缺省、private. 
   属性:是可以使用权限修饰符进行修饰的。
   局部变量:不能使用任何权限修饰符进行修饰的。
④是否有默认值:〔重点)
   属性:都有默认初始化值
     意味着,如果没有给属性进行显式初始化赋值,则会有默认初始化值。
   局部变量:都没有默认初始化值。
     意味着,在使用局部变量之前,必须要显式的赋值,否则报错。   


方法

方法 是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中也称为 函数 或 过程。

格式:
权限修饰符[其它修饰符] 返回值类型 方法名(形参列表){ //方法头
       //方法体
}

细节:①权限修饰符 private \ 缺省 \ protected \public
     ②返回值类型
         无返回值类型:void  如输出
         有具体的返回值类型:需要指明返回的数据的类型。
             在方法内部配合使用“return +返回值类型的变量或常量”

注:
  Java里的方法`不能独立存在`,所有的方法必须定义在类里。
  Java中的方法不调用,不执行。每调用一次,就执行一次。
  方法内可以调用本类中的方法或属性。
  方法内不能定义方法。return后面不能声明执行语句

对象数组

数组的元素可以是基本数据类型,也可以是引用数据类型。当元素是引用类型中的类时,称为对象数组。

public class StudentTest {
    public static void main(String[] args) {
        Student[] students = new Student[20];
        for (int i = 0; i < students.length; i++) {
            students[i]=new Student();
            students[i].number=i+1;
            students[i].state=(int)(Math.random()*6+1);
            students[i].score=(int)(Math.random()*101);

        }
        for (int i = 0; i < 20; i++) {
            System.out.println("学号:"+students[i].number+",年级:"+students[i].state +",成绩:"+students[i].score );
        }

    }

方法重载
方法的重载(overload)
定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可。
满足这样特征的多个方法,彼此之间构成方法的重载。
2.总结为:“两同一不同”
两同:同一个类、相同的方法名一   不同:参数列表不同。

编译器如何确定用的某个具体的方法?
先通过方法名确定了一波重载的方法,
进而通过不同的形参列表,确定具体的某一个方法  

可变参数
public class ArgsTest{
   public static void main(String[] args){ 
     ArgsTest test = new ArgsTest();
     test.print();
}
public void print(int ... nums){ 
     System.out.println("1111"); }


基本数据类型的局部变量
      赋值操作过的是数据值
引用数据类型的局部变量
      赋值操作过来的是地址值,不是简单的数值 例修改arr2,arr1也会变

规则:实参给形参赋值的过程
>如果形参是基本数据类型的变量,则将实参保存的数据值赋给形参。
>如果形参是引用数据类型的变量,则将实参保存的地址值赋给形参。

面试题:Java中的参数传递机制是什么?值传递。(不是引用传递)

交换数组两个变量时

public void swap(int i, int j){ 
   int temp i;
   i=j;
   j= temp;
   以上错误!!!
public void swap(int[] arr, int i, int j){
   int temp arr[i];
   arr[i] = arr[j];
   arr[j] =temp; 

import关键字的使用
import:导入
import语句来显式引入指定包下所需要的类。相当于`import语句告诉编译器到哪里去寻找这个类
import语句,声明在包的声明和类的声明之间。
如果需要导入多个类或接口,那么就并列显式多个import语句即可
如果使用`a.*导入结构,表示可以导入a包下的所有的结构。举例:可以使用java.util.*的方式,如果导入的类或接口是java.lang包下的,或者是当前包下的,则可以省略此import语句。
如果已经导入java.a包下的类,那么如果需要使用a包的子包下的类的话,仍然需要导入。
如果在代码中使用不同包下的同名的类,那么就需要使用类的全类名的方式指明调用的是哪个类。例:Date
封装性
高内聚:类的内部数据操作细节自己完成,不允许外部干涉;

低耦合:仅暴露少量的方法给外部使用,尽量方便外部调用。

所谓封装,就是把客观事物封装成抽象概念的类,并且类可以把自己的数据和方法只向可信的类或者对象开放,向没必要开放的类或者对象隐藏信息。

posted @ 2024-06-18 21:06  LianJXian  阅读(1)  评论(0编辑  收藏  举报