JAVA学习笔记——JAVA基础语法之精华

一、标识符

     概念:JAVA里面我们可以给他取名字的(变量、类、方法等等)就是标识符:

     注意:1、标识符只能包含字母、数字、下划线还有美元符号$

              2、只能以字母、下划线和美元符号开头

二、变量

     概念:JAVA中储存数据的最小单元

     扩展:计算机中保存数据的最小单元是位(一个0或是一个1就是一位)

             8bite = 1byte(字节)  1024byte = 1KB   1024kb = 1MB

              一个英文字符占1个字节;一个中文字符占2个字节

     作用:使用变量名来代替了计算机内存中的地址

  分类:

        按照位置上来分:

    1、成员变量:定义在类的里面,方法的外面

    2、局部变量:定义在方法里面的

    按照数据类型来分

    1、基本数据类型:4类8种

    2、应用数据类型:除了基本数据类型之外的都是基本数据类型

  作用域:变量的适使用范围

             一般情况下变量在哪对大括号中定义就只能在哪对大括号中使用

三、数据类型

  概念:对变量名定义一个存放数据的类型,然后对变量进行赋值

  4类8种数据类型:

  4类:

    1、布尔类型(boolean)

      一般用来表示逻辑运算只有true和false两个值

    2、字符类型(char)

      字符串的常量要使用双引号“ ”  如果是字符的常量要使用单引号‘ ’

      注意:JAVA的字符类型是2个字节  C语言是1个字节的

                         JAVA使用的是unicode编码(思考:理解一下字符编码的概念及作用)

    3、整数类型

      byte(1)  short(2) int(4) long(8)正确使用可以节省内存的占用率

      long型变量后面要加上L

    4、浮点类型

       float   double

  数据类型之间的转换规则:

    1、小的自动转换成大的

             (从低到高数据类型顺序)byte  short   char  int  long  float  double

    2、boolean和其他数据类型之间不允许进行转换

    3、大的转换成小的数据类型要加强制类型转换,务必要注意溢出的问题

    4、byte、short、char之间不能进行转换,如果参与了运算会先把自己转换成int类型

                再 参加运算

           注:当有多种数据类型混合运算的时候先把数据类型转换成参加运算的数据类型最高的那一个再参与运算   

                运算符中&&比逻辑与运算效率更高,因为当前面的计算结果出来之后为false的话就不需要再计算后面的而是直接给出结果   

四、参数

  实际参数:方法调用的时候传入的参数既称为实际参数

  形式参数:就是用来接受实际参数的,一般放在被调用的函数体里面的

  注意:形式参数和实际参数的数据类型要一样,个数要匹配

 

五、面向对象和面向过程的区别

  面向过程:它所考虑的是过程和步骤,比如说开车去深圳我们要考虑的是怎么去也就是说:what  to do

  面向对象:它所考虑的是有几个对象,比如开车去深圳我们要考虑的就是有几个对象,也就是说:how to do

六、类

  概念:是对象的模板,它是具有相同属性和行为(方法)的一组对象的集合

  对象和类的区别:类是抽象的,而对象是具体存在的

    知识扩充:同一个文件夹中只能有一个类是public的,而且main()方法绝对是包含在public类当中

七、构造方法(构造器、构造函数)

  作用:1、主要是用来创建对象    2、初始化成员变量  

  特点:1、必须与类名相同   2、没有返回值类型,void也没有  3、每一个类都会有一个隐式的构造方法,没有参数和方法体  4、手动添加显式的构造方法那么隐式的构造方法自动消失

  

    知识扩充:面向对象编程思维步骤:1、考虑有几个对象  2、通过对象确定有几个类  3、找出每一个类中存在的方法  4、调用相应的方法实现功能

例如这个简单的例子:public class test{
          public static void main(String[] args){
              Mouse mouse = new Mouse();
              mouse.name = "mick";
        
              Cat cat = new Cat();
              cat.name = "Tom";
        
              cat.Catch(mouse);
        }
      }

      class Cat{
          String name;
    
          public void Catch(Mouse mouse){
              mouse.cry();
          }
      }

      class Mouse{
          String name;
    
          public void cry(){
              System.out.println(name + "  is crying");
          }
      }

        思维方式:找出有两个对象tom猫和mick老鼠。进而找出有两个类一个是猫类一个是老鼠类,然后确定两个对象内部分别包含两个方法一个是属于tom对象的catch()方法一个是属于mick 对象的cry()方法

 

    专家模式:一个方法改变的是那个对象的状态(属性),那么该方法就属于谁

八、JVM(JAVA虚拟机)的四个区域

  1、代码区(code segment):存放的是字节码

  2、堆区(heap segment):存放的是对象

  3、栈区(Stack segment):存放的是局部变量

  4、栈区的一块特殊区域(static segment):存放字符串常量和静态变量

    堆和栈的区别:堆可以保存大的数据类型运行速度慢;栈只可以保存小的数据内容但是运行速度快

    局部变量和成员变量重名的问题解决办法

         办法:该情况下使用this指针,因为每一个对象都有一个this指针,相当于当前对象的引用。原理如下图所示:

                        图  1

 

九、成员变量初始化

  1、JAVA当中,成员变量会默认初始化

      数值类型:默认为0     布尔类型(boolean):默认为false      字符类型(char):默认是空   引用数据类型:默认是NULL

  null值的含义:表示一个引用没有指向任何一个对象,也就是谁栈中的一个引用没有指向任何一个栈中的内存地址,如上图所示形象来说就是“引用”的那个箭头没有

  2、JAVA中的垃圾回收机制(GC)

    如果一个对象没有指向任何一个引用,那么这个对象就是JAVA中的垃圾,JAVA会自动调用GC自动收回

      知识延伸:如果说在JAVA中需要一个对象使用完后就被GC收回,最好的变法就是把指向这个对象的引用设置为NULL

 

十、Static关键字

  1、加上static的成员变量称之为静态变量(类变量)

    static segment中的数据不能重复,所有对象共享其数据,其中一个对象对其进行修改之后那么其他的对象的值也随之改变

    因为所有对象共享它,跟对象没有任何关系,所以也就称之为类变量;可以使用  类名.变量名  来调用

    如下图所示逻辑:

    

                    图  2

    堆里面的两个对象共享 Static segment里面的静态变量Corcol;如果要改变其值只需使用  Person.Corcol  即可改变其值

  2、加上static的方法称之为静态方法(类方法)

    类方法不需要创建对象来调用,可以直接是用  类名.方法名  调用

    注意:(1)、静态的方法只能访问静态的成员变量

       (2)、非静态的方法既可以访问静态的成员变量也可以访问非静态的成员变量

    知识延伸:为什么main()方法是static的?

      因为main()方法是程序的入口,在使用main()方法之前不允许有任何的对象被调用,所以说main()方法务必是static的

转载于:https://www.cnblogs.com/hejiajunsh/articles/2881397.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编译mediastreamer2/ffmpeg/linphone(x86平台)

--------------------------在x86环境下编译mediastreamer2的步骤--------------------------------------1)编译OGG库 音频编解码 http://www.xiph.org/downloads/ ./configure --prefix/usr --disable-static 2)编译SPEEX 音频编解码./configure -…

c语言 行程长度编码,C语言编程题,求大佬帮助,关于数组的。

满意答案6kidf3xhs2017.11.07采纳率:41% 等级:8已帮助:62人2 个关键:2位数字的随机数: a[i] 10 rand() % 90;10位或个位 含5 的 并高于平均值的 数:if (a[i]>ave && ( a[i]%50 || (a[i]/10)…

python多级字典嵌套_使用pythonscsv DictReader创建多级嵌套字典

完全是Python noob,可能遗漏了一些明显的东西。我到处找遍了,还没有找到解决办法,所以我想我应该寻求一些帮助。在我正在尝试编写一个函数,它将从一个大的csv文件构建一个嵌套字典。输入文件的格式如下:Product,Price,…

wpf学习笔记二 深入学习 xaml

1、XAML 主要用于绘制UI界面,最大的优点是能使UI与运行逻辑分离开来,使得整个程序回到逻辑处理上来。 每一个标签对应.NET Framework类库的一个控件类。通过设置标签的Attribute,不仅可以对标签所对应的控件 对象Property进行赋值&#xf…

cortex a7 a53_小号“A7”终于亮相,配4米9车长 大溜背!堪称15万内最强颜值!

原标题:小号“A7”终于亮相,配4米9车长 大溜背!堪称15万内最强颜值!今天来推荐一款b级轿车,大家都知道现在国内热度最高的就上suv车型了,但是销量最高的车型依旧还是轿车车型,因为轿车车型的粉丝…

speex

Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码器,Speex也很适合网络应用,在网络应用上有着自己独特的优势…

C语言数据结构迷宫实验报告,数据结构c语言课程设计报告之迷宫

数据结构c语言课程设计报告之迷宫 C语言与数据结构课程设计报告学 号 ** 姓 名 ** 课程设计题目 迷 宫 求 解 2012 年 5 月目 录1 需求分析 1.1 功能与数据需求 1.1.1 题目要求的功能 1.1.2 扩展功能 1.2 界面需求 1.3 开发环境与运行需求 2 概要设计 2.1主要数据结构2.2程序总…

unicode字符大全可复制_说说Excel不可见字符的那些事

今天小伙伴问了个问题看上去啥也没有,为什么黏贴到记事本上前面那么多空白呢?典型的不可见字符惹出来的麻烦,这个往往是公司软件导出数据造成的我们今天就来细说说不可见字符的那些事拿上面的例子说明大部分不可见字符,这一步就能…

删除后别人的微信号变成wxid_微信偷偷更新:终于能改微信号,每年改一次

跟微信打交道多年,机哥可以说是六号线最熟知微信套路的人。比如,微信最喜欢在临近周末的时候,来一波悄悄更新。。难不倒我!微信新动态,几乎每次都被机哥妙手抓住。掐指一算,今天周五。安卓版微信 7.0.15 更…

窗体自适应分辨率

窗口、控件以及字体大小均随分辨率而变化&#xff0c;让界面适应各种不同的分辨率。 var FWidth: Integer;begin inherited; if (Screen.width <> 1024) then begin FWidth : Self.width; Scaled : True; Font.Size : (Self.width DIV FWidth) * Font.Size; // 字体大小调…

android设置多个按钮,android代码中设置两个按钮之间位置

package com.example.helloworld01;//包名import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.graphics.Color;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget…

linux 下查看程序依赖的库

查看arm程序的依赖库 # arm-linux-readelf hello -d Dynamic section at offset 0xf10 contains 25 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000000c (INIT) …

cad管线交叉怎么画_高效设计!多种方式进行管线连接、伸缩

节点连接就是需要把一些节点连接起来&#xff0c;需要通过拖拽把他连接起来&#xff0c;类似CAD的延伸。管立得中的节点连接是可以创建他们的连接关系的&#xff0c;会进行管道的联动。下面是使用管线连接功能进行连接节点&#xff0c;以及管道伸缩的的操作方式。一、管线连接1…

淡入淡出轮播图效果

第一版本有很多限制&#xff0c;特以此做记录以待日后优化。模仿支付宝首页轮播图https://www.alipay.com/ <script> $(function(){var i1;var time;$("#J-slide").hover(function(){timewindow.clearInterval(time);//清除自动播放},function(){timesetInterv…

linux打开Firefox报错,Linux下安装Firefox-3.6.12.tar.bz2及libxul.so报错解决方案

在Linux下安装firefox-3.6.12.tar.bz2&#xff0c;解压后运行./firefox时报错&#xff1a;./firefox-bin: error while loading shared libraries: ./libxul.so: cannot restore segment prot after reloc: Permission denied解决方法如下&#xff1a;以如下命令运行你解压目录…

Ubuntu 12.04 静态ip的设置方法

1. 配置静态ip地址 $sudo vi /etc/network/interfaces 原有内容只有如下两行&#xff1a; auto lo iface lo inet loopback 向末尾追加以下内容&#xff1a; auto eth0 iface eth0 inet static address 192.168.0.33 gateway 192.168.0.1 netmask 255.255.255.0 net…

pp助手苹果版_生日助手时间管理软件免费版下载-生日助手倒计时app苹果版下载ios...

生日助手app是一款全新的时间管理软件&#xff0c;帮助你更好的进行时间管理快乐生活&#xff0c;能够帮助你准确提醒你想要设定的重要日子&#xff0c;app的功能服务支持除了日历以外&#xff0c;还有计算器、天气预报、倒计时还有星座等&#xff0c;非常实用哟。app能够帮助用…

Handler post用法整理

来自:http://www.eoeandroid.com/forum.php?modviewthread&tid197324 感谢原作者. /** 在这个demo中&#xff0c;整个过程如下&#xff1a;程序一启动&#xff0c;就把MyRunnable加入到消息队列中&#xff0c;android的handler是异步机制&#xff0c;所以在handler.post(n…

zabbix华为交换机模板_【教程】思科交换机镜像端口配置实例

关注我&#xff0c;你的眼睛会怀孕镜像口就是把思科交换机上的其他口的数据流量全部转到一个口或者两个口上&#xff0c;通常被用作排查问题或者获取数据流量。下面简单介绍下怎么配置源目的镜像口吧。1、使用telnet或者ssh连接到交换机上&#xff0c;可以使用连接工具&#xf…

linux中死锁的概念,【Linux】死锁概念总结

什么是死锁如果一组进程(或者线程)中的所有进程(或者线程)都在等待该组中其他进程(或者线程)才能引发的事件&#xff0c;那么这组进程(或者线程)就是死锁的死锁出现的情况举例(1)线程自锁&#xff0c;自己将自己锁住当进程(线程)第一次访问一个资源时&#xff0c;对该资源进行加…