java.基础学习1.0

1.static的学习:

package com.learn.one;

/*
 *  常量:通常使用大写字母
 *  (1)必须要在常量声明对其进行初始化,否则会出现编译错误。常量一旦初始化,就无法在对这个常量进行赋值
 *  (2)final关键字不仅可用来修饰基本数据类型的常量,还可以用来修饰后续章节讲到的“对象引用或方法”
 *  
 *  final 数据类型 常量类型 [=值]
 *  
 *  static关键字的使用:
 *  1.static是静态属性
 *  2.static类型的变量时所有对象共享的内存空间,也就是说无论最终有多少个对象产生,也都只有一个static属性。
 *  3.定义方法:
 *  注意:在类中声明了一个static类型的属性,则此属性既可以在非static类型的方法中使用,也可以在static类型的方法
 *  中使用。若要用static类型的方法调用非static类型的属性,就会出现错误。
 *  4.静态代码块:static{}优先于静态方法,由此可以知道 静态代码块可以对静态属性初始化
 *  
 *  
 *  
 *  public static void main(String[] args){}
 *  public:表示是公共方法 
 *  static:表示此方法为一静态方法,可以由类名直接调用
 *  void:表示此方法无返回值
 *  main:系统定义的方法名称
 *  String[] args:接受运行时的参数
 */
public class Demo1 {
//	定义常量
	static final int YEAR =365;
	public static void main(String[] args){
		System.out.println("两年是:"+2*YEAR);
		Person p1=new Person("you",12);
		Person p2=new Person("ou",15);
		Person p3=new Person("u",18);
//		修改前的信息
		System.out.println("未改前:");
		System.out.println(p1.talk());
		System.out.println(p2.talk());
		System.out.println(p3.talk());
		
//		修改后的信息
//		p1.city="mg";
		Person.city="mg";
//		所有对象都指向同一个city属性,只要当中有一个对象修改了city属性的内容,则所有的对象都会被同时修改
		System.out.println("改之后");
		System.out.println(p1.talk());
		System.out.println(p2.talk());
		System.out.println(p3.talk());
//		注意:用static方式声明的属性,也可以用类名直接访问
//		所以也可以使用:Person.city="mg";

		
		//结果:
//		未改前:
//		我是you来自zg年龄12
//		我是ou来自zg年龄15
//		我是u来自zg年龄18
//		改之后
//		我是you来自mg年龄12
//		我是ou来自mg年龄15
//		我是u来自mg年龄18
		
		Person.setCity("hahaha");
		System.out.println("使用了静态方法");
		System.out.println(p1.talk());
		System.out.println(p2.talk());
		System.out.println(p3.talk());
//		结果:
//		使用了静态方法
//		我是you来自hahaha年龄12
//		我是ou来自hahaha年龄15
//		我是u来自hahaha年龄18
	}
	
}
class Person{
	private String name;
	private int age;
	static String city="zg";
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
//	声明了一个talk()方法
	public String talk(){
		return "我是"+this.name+"来自"+this.city+"年龄"+this.age;
	}
	//声明了静态方法:
	public static void setCity(String c){
		city=c;
	}
	
}
//结果:
//两年是:730
//未改前:
//我是you来自zg年龄12
//我是ou来自zg年龄15
//我是u来自zg年龄18
//改之后
//我是you来自mg年龄12
//我是ou来自mg年龄15
//我是u来自mg年龄18

public class Text{
//    静态代码块
    static {
        System.out.println("Text的静态代码块被调用了");
    }
//    主方法:
    public static void main(String[] args) {
        System.out.println("程序开始执行");
        new Person();
        new Person();
    }
}

class Person {
    public Person(){
        System.out.println("1.public Person");
    }
    //    静态代码块
    static {
        System.out.println("Person类的静态代码块被调用");
    }
}
//Text的静态代码块被调用了
//程序开始执行
//Person类的静态代码块被调用
//1.public Person
//1.public Person

/*
   可见静态代码块先执行  静态代码块优先于静态方法 (Text类中可以看出)
   而且只执行一次  :Person类的静态方法只执行一次
 */

2.

static注意事项

1、静态只能访问静态。
2、非静态既可以访问非静态的,也可以访问静态的。

关于详细:

(25条消息) 深入理解static关键字_宜春-CSDN博客

3.变量:

1)声明变量

1.指定在内存中分配空间大小(编译程序会在内存里开辟一块足以容纳此变量的内存空间给它)

2.规定这个变量所能接受的运算

2)变量的命名规则

变量也是一种标识符:

1变量名可由任意顺序的大小写字母、数字、下划线和美元符号

2变量名不能以数字开头

3变量名不可以是java 的保留关键字

3)变量的作用范围(作用域)

在java中,在方法(函数)内定义的变量,其作用范围(包括方法的参数)是从它定义的地方开始,到它所作用范围终结的位置处结束。

1.成员变量

//成员变量:在类替中定义的是成员变量。作用范围是整个类,
//也就是整个类都可以访问到定故意的这个成员变量
public class Text {
    //        定义成员变量
    static int v=1;
    public static void main(String[] args) {
        System.out.println("成员变量:"+v);
//        成员变量:1
    }
}

2.局部变量


//局部变量:在一个函数(或称方法)或函数内代码块中定义的变量,这个变量就是局部变量
//局部变量在函数或代码块被执行时创建,在函数或代码块结束时被销毁。
//注意:局部变量在进行取值操作前必须被初始化或赋值操作,否则会出现编译错误
public class Text {
    public static void main(String[] args) {//main方法桉树列表定义的局部变量args
//        main方法体内定义的局部变量sum
        int sum =0;
        for (int i=0;i<5;i++){
//            for循环体内定义的局部变量i
            sum=sum+i;
            System.out.println("i=" +i+",sum="+sum);
        }
    }
}
//i=0,sum=0
//i=1,sum=1
//i=2,sum=3
//i=3,sum=6
//i=4,sum=10
java存在块级作用域,在程序中任意大括号包装的代码块中定义的变量,它的生命仅仅存在于程序运行该代码块时。在循环里声明的变量只要跳出循环,这个变量便不能再使用了,也就是,方法或方法的参数列表里定义的局部变量,当跳出方法体之外,该变量就不能再使用了。
public class Text {
    public static void main(String[] args) {
        int outer=1;
        {
            int inner=2;
//            int outer=1;会报错 可见java中作用域是不可以嵌套的  所以在方法的开始处定义了outer这个变量
//            那么直到该方法接收处都不能再定义另外一个同名的变量outer
            System.out.println("inner="+inner);
            System.out.println("outer="+outer);
        }
//        System.out.println("inner="+inner);这里会报错
        int inner=3;
//        但是在这里出现了inner 是因为在for循环中的inner在for的{}结束后 它也结束了 只是不能在for循环中再出现inner
//        但是出了这个for就可以再定义inner
        System.out.println("inner="+inner);
        System.out.println("outer="+outer);

        System.out.println("x="+x);
    }
    static  int x=10;
}
//        inner=2
//        outer=1

//        inner=3
//        outer=1

//        x=10
//在java中,类与方法之间作用域是可以嵌套的,可以把整个类看做一个大的作用域,
 //  它定义的字段(或称数据成员)可被方法中的同名字段所屏蔽。
public class Text
{
    public static void main(String[] args) {
        int x=1;
        System.out.println("x="+x);
    }
    private int x;
}
/*
   第5行所定义的x,作为Text.class 的数据成员,它的作用域是整个类,也就是 从第3到第8
   之间,也就是包括了main方法,而其内部定义了x这个变量,在这个范围中,第8行的x被第5行定义的
   x所覆盖
   
   结果:x=1
 */

数据类型:

1.基本数据类型:数值型:整数型(int、 byte、short、long )浮点型(float、double)

                            字符型(char)用于存储单个字符 占用16位 (两个字节) 

必须要用' ' 例如:'a'  单引号表示的字符 而双引号表示的是字符串

                             布尔型(boolean)

long长整型:64位,8个字节  int整型:32位,4个字节   

short短整型:16位,2个字节     char字符:16位,2个字节

byte字节:8位,1个字节    boolean布尔值:1位

float单精度:32位,4个字节,double双精度:64位,8个字节

(若使用float型小数,则需要在小数后面添加f或F,如果没有添加会被认为是double类型 double类型不加d或D是没有出错的)

package Test1028;

public class Test1 {
    public static void main(String[] args) {
        char word ='d';
        char word2='@';
        int p=23045;
        int p2 =45123;
//        java是采用unicode编码的
        System.out.println("d在unicode中的编码的顺序位置是:"+(int)word);
        System.out.println("@在unicode中的编码的顺序位置是:"+(int)word2);
        System.out.println("23045在unicode中的编码是:"+(char)p);
        System.out.println("45123在unicode中的编码是:"+(char)p2);
    }
}

2.引用数据类型:类(class)、接口(interface)、数组(array)

3.数据类型的转换:

1.自动转换

注意:boolean类型是不可能与其他任何数据类型进行转换。

           整数与浮点数亦是兼容的,所以可以相互转换

           转换后的数据类型的表示范围不小于转换前的类型。(扩大转换)

           字符与整数是可使用自动类型转换的

           byte->short->int->long->float->double

2.强制转换

public class Text
{
    public static void main(String[] args) {
        int a=55;
        int b=9;
        float g,h;
        System.out.println("a="+a+"b="+b);
        g=a/b;
        System.out.println("a/b="+g);
//        因为这里a/b是整数的 后面的小数点会被清除为0,而又因为g是float所以输出的g是要有小数点 所以是6.0
        System.out.println("a="+a+"b="+b);
        h=(float)a/b;
        System.out.println("a/b="+h);
//        而这里是因为a被强制为float 所以a/b是float了 所以这个时候的结果是有小数 
    }

}
//        a=55b=9
//        a/b=6.0
//        a=55b=9
//        a/b=6.111111
public class Text
{
    public static void main(String[] args) {
        System.out.println("输出Long的最大和最小");
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);

        System.out.println("输出Integer的最大和最小");
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);

        System.out.println("输出Character的最大和最小");
        System.out.println(Character.MAX_VALUE);
        System.out.println(Character.MIN_VALUE);

        System.out.println("输出Long的最大和最小");
        System.out.println(Float.MAX_VALUE);
        System.out.println(Float.MIN_VALUE);

        System.out.println("输出Double的最大和最小");
        System.out.println(Double.MAX_VALUE);
        System.out.println(Double.MIN_VALUE);

        System.out.println("输出Byte的最大和最小");
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);

        System.out.println("输出Short的最大和最小");
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);

//输出Long的最大和最小
//9223372036854775807
//-9223372036854775808
//输出Integer的最大和最小
//2147483647
//-2147483648
//输出Character的最大和最小
//
// 
//输出Long的最大和最小
//3.4028235E38
//1.4E-45
//输出Double的最大和最小
//1.7976931348623157E308
//4.9E-324
//输出Byte的最大和最小
//127
//-128
//输出Short的最大和最小
//32767
//-32768
    }

}

3.

1.一元运算符

public class Text
{
    public static void main(String[] args) {
        int b =125;
        boolean a=false;
        System.out.println("b="+b);
        System.out.println("~b="+(~b));//~是去补码的意思
        System.out.println("b++="+(b++)+"b="+b);
        System.out.println("b--="+(b--)+"b="+b);
        System.out.println("-b="+(-b));//取负号

        System.out.println("a="+a);
        System.out.println("!a="+(!a));//取反
        
    }

}
//        b=125
//        ~b=-126
//        b++=125b=126
//        b--=126b=125
//        -b=-125
//        a=false
//        !a=true

2.算术运算符

(+ - * /  %(取余))

3.逻辑运算符 (只对布尔型操作数进行运算并返回一个布尔型数据)

&&  or  &与 (两个曹操作数必须是真,结果才是真)     

 || or | 或 (两个操作数只要一个是真,结果就为真)       

 !非(返回的是与操作数相反的布尔值)

public class Text
{
//    1/0==0 是非法的操作
    public static void main(String[] args) {
        if (1==2&&1/0==0){//(false&错误)
            //这里是不会报错的 因为&&只需要看第一个操作数 false 所以1/0这个是非法的操作被忽略了
            System.out.println("1.1111111");
        }
//        if (1==2 & 1/0==0){   (false&错误)
            Exception in thread "main" java.lang.ArithmeticException: / by zero
	          at jichu.Text.main(Text.java:8)
            这里编译出错
//            System.out.println("2222222222");
//        }
//        1/0==0 是非法的操作 而& 是两个操作数都要看的
        if (1==1||1/0==0){//(ture||错误)
            System.out.println("成功");
        }
//成功
//        //这里是不会报错的 因为&&只需要看第一个操作数 ture 所以1/0这个是非法的操作被忽略了


//        if (1==1|1/0==0){//(ture||错误)
//            System.out.println("成功");
//        }
//        Exception in thread "main" java.lang.ArithmeticException: / by zero
//	      at jichu.Text.main(Text.java:20)
//        1/0==0 是非法的操作 而| 是两个操作数都要看的
    }

}

4.赋值运算符

5.位运算符

&  :按位与             |:按位或                ^:按位异或 

~ :按位取反        << :左移位           >>:带符号右移位     >>>:无符号右移位

6.三元运算符

“x>y?x:y”

7.关系运算符  >   <  >=   <=    ==    !=    

8.递增与递减运算符   ++    --  

9.括号运算符   ()   其优先级最高 

4.表达式

1.算术表达式

2.关系表达式

3.逻辑表达式

4.赋值表达式

public class Text {
    public static void main(String[] args) {
        System.out.println(" ---算术运算符");
//        算术运算符
        int x=123456789,y=9;
        System.out.println("x*y="+x*y);
        System.out.println("------关系运算符");
//        关系运算符
        int a =5,b=8;
        boolean t1=a>b;
        boolean t2 =a<b;
        System.out.println("a>b="+t1);
        System.out.println("a<b="+t2);
        System.out.println("-----逻辑运算符");
//       逻辑运算符
        boolean t3=(1+1==2)&&(1+2==3);
        System.out.println("(1+1==2)&&(1+2==3)="+t3);
        System.out.println("------赋值运算符");
//       赋值运算符
        int z;
        z=x+y;
        System.out.println("x+y="+z);
//       递增符号
        System.out.println("a="+a+"b="+b);
        a+=b;
        System.out.println("a+=b后的"+"a="+a+"b="+b);
    }

}
// ---算术运算符
//x*y=1111111101
//------关系运算符
//a>b=false
//a<b=true
//-----逻辑运算符
//(1+1==2)&&(1+2==3)=true
//------赋值运算符
//x+y=123456798
//a=5b=8
//a+=b后的a=13b=8

类型转换:

(1)占用字节较少的数据类型转换占用字节较多的数据类型

(2)字符类型会转换int类型

(3)int类型会转换成float类型

(4)表达式中若有某个操作数的类型为double,则另外一个操作数也会转换成double类型

(5)布尔类型不能转换成其他类型

5.语句

空语句:虽然不完成任何功能,但同样会额外占用计算机资源

(1)一条java语句后面可以跟多个分耗吗?如int i;;

是可以的 。事实上,由于多个java语句可以处于同一行,那么int i;;就可以解读为 int i;

这条语句和另外一个空语句“  ; ” 共处于一行之上。int i 后面即使有10个分号也是合法的。

(2)


public class Text {
    public static void main(String[] args) throws IOException {
//        空语句
        int i;;
//        声明语句
        int a;//声明一个变量
        int x,b;//声明多个变量
        int y =1;//声明变量的同时,直接为变量赋值
        
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangmuzi557

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值