Java-03 -控制结构

Java-03 -控制结构

Java中控制结构(control flow)的语法与C类似。它们都使用{}来表达隶属关系。 选择结构 (if) if (conditon1) { statements; ... } else if (condition2) { statements; ... } else { statements; ... } 上面的condition是一个表示真假值的表达式。statements;是语句。 练习 写一个Java程序,判断2013年是否是闰年。 public class leapyear{ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sca=new Scanner(System.in ); System.out.println("请输入一个 年份"); long year=sca.nextLong(); if(year % 4== 0 && year%100!=0||year%400==0) { System.out.println(year+"是闰年!"); } else { System.out.println(year+"不是闰年!"); } } }

Java-02 -JAVA基础编程练习

Java-02 -JAVA基础编程练习

本文对10道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,比如第一题用到了方法的递归,初学者可能不理解,最好先看那些有if、for、while可以简单解决的程序题!但是,对于比较深入学习过的同学,还是希望可以一口气就看完,这是比较全面思维锻炼!

Java-01 -从HelloWorld到面向对象

Java-01 -从HelloWorld到面向对象

Java是完全面向对象的语言。Java通过虚拟机的运行机制,实现“跨平台”的理念。我在这里想要呈现一个适合初学者的教程,希望对大家有用。先来看一个 HelloWorld.java 程序。这个程序在屏幕上打印出一串字符"Hello World!": public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 程序中包括Java的一些基本特征: 类(class):上面程序定义了一个 类 HelloWorld,该类的名字与.java文件的名字相同。 方法(method):类的内部定义了该类的一个 方法 main。 语句(statement):真正的“打印”功能由一个语句实现,即: System.out.println("Hello World!"); 下面两点有关Java的书写方式: Java中的语句要以 ; 结尾 (与C/C++相同)。 用花括号 {} 来整合语句,形成程序块。通过程序块,我们可以知道程序的不同部分的范围,比如类从哪里开始,到哪里结束。

调试

调试

被调试时,进程的运行速度大大降低,例如,单步调试大幅降低恶意代码的运行速度,所以时钟检测是恶意代码探测调试器存在的最常用方式之一。有如下两种用时钟检测来探测调试器存在的方法。 记录一段操作前后的时间戳,然后比较这两个时间戳,如果存在滞后,则可以认为存在调试器。 记录触发一个异常前后的时间戳。如果不调试进程,可以很快处理完异常,因为调试器处理异常的速度非常慢。默认情况下,调试器处理异常时需要人为干预,这导致大量延迟。虽然很多调试器允许我们忽略异常,将异常直接返回程序,但这样操作仍然存在不小的延迟。

VSC vscode标签匹配 括号匹配插件

VSC vscode标签匹配 括号匹配插件

Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux。

Windows API学习-单选按钮、复选框、分组框控件(1)

Windows API学习-单选按钮、复选框、分组框控件(1)

单选按钮(Radio Button)和复选框(Check Box)是常见的Windows控件,用于从给出的选项中选择一项或多项 单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。 单选按钮和复选框都是一种特殊的按钮,窗口类名称都是button,只不过增加了一些特殊的窗口样式罢了。单选按钮的样式为BS_AUTORADIOBUTTON,复选框的样式为BS_AUTOCHECKBOX。要想为单选按钮分组,可以增加WS_GROUP样式。设置了 WS_GROUP 样式的单选框为一组中的首元素,随后的所有单选按钮都和它在同一组,直到下一个设置了 WS_GROUP 样式的单选按钮。 下面的代码,将实现上图中所示的单选按钮和复选框: //窗口过程 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; static HFONT hFont; //逻辑字体 //一组单选按钮 static HWND labSex; //静态文本框--性别 static HWND radioMale; //单选按钮--男 static HWND radioFemale; //单选按钮--女 //一组单选按钮 static HWND labMarriage; //静态文本框--婚姻状况 static HWND radioMarried; //单选按钮--已婚 static HWND radioSingle; //单选按钮--未婚 static HWND radioSecrecy; //单选按钮--保密 //一组复选框 static HWND labPet; //静态文本框--你的宠物 static HWND checkboxDog; //复选框--狗 static HWND checkboxCat; //复选框--猫 static HWND checkboxFish; //复选框--鱼 static HWND checkboxOther; //复选框--其他 switch (message){ case WM_CREATE: hFont = CreateFont( -14, -7, 0, 0, 400, FALSE, FALSE, FALSE,DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, TEXT("微软雅黑")···

Windows API学习-修改控件背景文字颜色(3)

Windows API学习-修改控件背景文字颜色(3)

透明背景 实现透明背景需要设置文本背景颜色透明,同时返回没有颜色的画刷。 1) SetBkMode 函数可以用来设置文本的背景模式,它的原型为: int SetBkMode( HDC hdc, //设备环境句柄 int iBkMode //背景模式 ); iBkMode 有下面两种取值: 取值 说明 OPAQUE 使用当前背景颜色来填充背景。 TRANSPARENT 背景透明。 2) GetStockObject (NULL_BRUSH); 语句可以返回没有颜色的画刷。 示例代码: case WM_CTLCOLORSTATIC: hdcStatic = (HDC)wParam; SetTextColor( hdcStatic, RGB(0x41, 0x96, 0x4F) ); //翠绿色 SetBkMode(hdcStatic, TRANSPARENT); //透明背景 return (INT_PTR)GetStockObject(NULL_BRUSH); //无颜色画刷 运行效果:

Windows API学习-修改控件背景文字颜色(2)

Windows API学习-修改控件背景文字颜色(2)

修改文字背景颜色 上节中,我们的代码只是改变了控件的背景颜色(整个子窗口的背景颜色),却忽略了文字的背景颜色。 修改文字背景颜色使用 SetBkColor 函数,它的原型为: COLORREF SetBkColor( HDC hdc, //设备环境句柄 COLORREF crColor //背景颜色 ); 修改文字前景色(文字颜色)使用 SetTextColor 函数,它的原型为: COLORREF SetTextColor( HDC hdc, //设备环境句柄 COLORREF crColor //背景颜色 ); 这里我们修改的是 static 控件中的文本颜色,所以需要获取 static 控件的设备环境句柄。非常巧妙的是,发送 WM_CTLCOLORSTATIC 消息时,wParam 参数表示的就是 static 控件的设备环境句柄(lParam 表示控件句柄)。 下面的代码会修改文本的背景色和前景色: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdcWnd; HDC hdcStatic; static HFONT hFont; //逻辑字体 static HWND hStatic; //静态文本框控件 static HBRUSH hBrush; //画刷 switch (message) { case WM_CREATE: //创建画刷 hBrush = CreateSolidBrush(RGB(0x41, 0x96, 0x4F)); //创建逻辑字体 hFont = CreateFont(-14/*高*/, -7/*宽*/, 0, 0, 700 /*700表示粗体*/, FALSE/*斜体?*/, FALSE/*下划线?*/, FALSE/*删除线?*/, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, TEXT("微软雅黑") ); //创建静态文本框控件 hStatic =···

Windows API学习-修改控件背景文字颜色(1)

Windows API学习-修改控件背景文字颜色(1)

当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息。如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄,Windows 会使用该画刷来绘制控件背景(子窗口背景)。 也就是说,改变 static 控件的背景颜色只有这一种方式,就是处理 WM_CTLCOLORSTATIC 消息。WM_CTLCOLORSTATIC 消息就是用来设置背景画刷的。 改变 static 控件的背景颜色: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdcWnd; static HFONT hFont; //逻辑字体 static HWND hStatic; //静态文本框控件 static HBRUSH hBrush; //画刷 switch (message){ case WM_CREATE: //创建画刷 hBrush = CreateSolidBrush( RGB(0x41, 0x96, 0x4F) ); //翠绿色 //创建逻辑字体 hFont = CreateFont(-14/*高*/, -7/*宽*/, 0, 0, 400 /*400表示正常字体*/, FALSE/*斜体?*/, FALSE/*下划线?*/, FALSE/*删除线?*/,DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, TEXT("微软雅黑") ); //创建静态文本框控件 hStatic = CreateWindow(TEXT("static"), TEXT("欢迎来到泛容!"), WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_CENTER, 20 /*x坐标*/, 20 /*y坐标*/, 240 /*宽度*/, 60 /*高度*/, hWnd /*父窗口句柄*/, (HMENU)1 /*控件ID*/,···

Windows API学习-编辑框控件(2)

Windows API学习-编辑框控件(2)

获取编辑框控件文本 之前我们介绍了 getWindowText 函数,它可以用来获取控件的文本。 下面的例子演示用户点击登录按钮时,如何获取用户的输入内容: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; static HFONT hFont; //逻辑字体 static HWND hLabUsername; //静态文本框--用户名 static HWND hLabPassword; //静态文本框--密码 static HWND hEditUsername; //单行文本输入框 static HWND hEditPassword; //密码输入框 static HWND hBtnLogin; //登录按钮 //定义缓冲区 TCHAR szUsername[100]; TCHAR szPassword[100]; TCHAR szUserInfo[200]; switch (message){ case WM_CREATE: //创建逻辑字体 hFont = CreateFont(-14/*高*/, -7/*宽*/, 0, 0, 400 /*一般这个值设为400*/, FALSE/*斜体?*/, FALSE/*下划线?*/, FALSE/*删除线?*/,DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, TEXT("微软雅黑") ); //创建静态文本框控件--用户名 hLabUsername = CreateWindow(TEXT("static"), TEXT("用户名:"), WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE /*垂直居中*/ | SS_RIGHT /*水平居右*/, 0 /*x坐标*/, 20 /*y坐标*/, 70 /*宽度*/, 26 /*高度*/, hWnd /*父窗口句柄*/, (HMENU)1···

Windows API学习-编辑框控件(1)

Windows API学习-编辑框控件(1)

创建编辑框控件 在C语言控制台程序(Console Application)中,可以使用 scanf 函数获取用户的输入,而在Windows程序中使用编辑框控件 编辑框控件的窗口类名是edit。除了子窗口常用的风格 WS_CHILD、WS_VISIBLE、WS_BORDER 外,edit 控件也有自己的风格,都是以ES开头。 风格 说明 ES_AUTOHSCROLL 当输入文字超出横向显示范围时自动滚动(一般必选)。 ES_AUTOVSCROLL 当输入文字超出纵向显示范围时自动滚动。 ES_CENTER 文本居中对齐。 ES_LEFT 文本左对齐(默认)。 ES_RIGHT 文本右对齐。 ES_MULTILINE 是否允许多行输入。 ES_PASSWORD 是否为密码输入框,如果指明该风格则输入的文字显示为“***”。 ES_READONLY 是否为只读。禁止用户输入或修改编辑控件中的文本。 ES_UPPERCASE 显示大写字符。 ES_LOWERCASE 显示小写字符。 ES_LOWERCASE 将用户输入到编辑控件的字符全部转换为小写。 ES_UPPERCASE 将用户输入到编辑控件的字符全部转换为大写。 ES_MULTILINE 指明了一个多行编辑控件(缺省的是单行的)。 1) 如果指定了ES_AUTOVSCROLL风格,编辑控件将显示尽可能多的文本,并且当用户按下ENTER键时会自动地垂直滚动文本。 2) 如果没有指定ES_AUTOVSCROLL风格,则编辑控件将显示尽可能多的行,如果在按下ENTER键却没有更多的行要显示的话,就发出蜂鸣声。 3) 如果指定了ES_AUTOHSCROLL风格,当光标到达控件的右边时,多行编辑控件会自动地水平滚动文本。如果要开始一个新行,用户必须按下ENTER键。 4) 如果没有指定ES_AUTOHSCROLL风格,控件会在有必要时自动将单词折合到下一行的开始。如果按下ENTER键,则另起一行。折回单词的位置是由窗口的大小决定的。如果窗口的大小发生改变,折回单词的位置也会反生改变,将会重新显示文本。 【示例】C语言中文本登录框演示: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; static HFONT hFont; //逻辑字体 static HWND hLabUsername; //静态文本框--用户名 static HWND hLabPassword; //静态文本框--密码 static HWND hEditUsername; //单行文本输入框 static HWND hEditPassword; //密码输入框 static HWND hBtnLogin; //登录按钮 switch (message){ case WM_CREATE: //创建逻辑字体 hFont = CreateFont(-14/*高*/, -7/*宽*/, 0, 0, 400 /*一般这个值设为400*/, FALSE/*斜体?*/, FALSE/*下划线?*/, FALSE/*删除线?*/,DEFAULT_CHARSET,···