במדעי המחשב, משתנה סטטי (באנגלית: Static variable) הוא משתנה שהוקצה על ידי הקומפיילר במקום קבוע. "משך החיים" שלו הוא כאורך כל ריצת התוכנית. זאת בניגוד למשתנים אוטומטיים שמאוחסנים בדרך כלל במחסנית הקריאות. כמו כן, הוא שונה מעצמים שמוקצים באופן דינאמי בערימה (Heap).
משתנה סטטי הוא משתנה ששייך למחלקה כלשהי. לכן, אין צורך וסיבה ליצור אובייקטים מסוג המחלקה על מנת לגשת אליו. שימוש נפוץ במשתנים סטטיים הוא ספירת העצמים שנוצרו מסוג המחלקה.
להלן קטע קוד ב-C# שבו נעשה שימוש במשתנים סטטיים על מנת לצבור את כמות האנשים:
class Person
{
// static variable
public static count;
// fields
private string name;
public Person(string name)
{
this.name = name;
count++;
}
public string GetName()
{
return this.name;
}
}
static void Main(string[] args)
{
// you need to write the class's name in order to access the static variable
Person.count = 0;
Person p1 = new Person("Bob");
// Person.count = 1
Person p2 = new Person("Alice");
// Person.count = 2
}